HarmonyOS鸿蒙Next中关于模块中出现依赖模块的全部文件内容

HarmonyOS鸿蒙Next中关于模块中出现依赖模块的全部文件内容 cke_142.png

可能是在终端下载了一个三方库的原因,突然发现每个模块中都出现了该模块所依赖的所有模块的全部文件内容,这是什么情况,并且在该模块中修改其所依赖模块的文件内容,原模块中的文件也会发生修改,这个问题如何解决。


更多关于HarmonyOS鸿蒙Next中关于模块中出现依赖模块的全部文件内容的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

开发者您好,本地HAR/HSP包

引用HAR:

"dependencies": {"package": "file:../package.har"}

引用HSP(在release模式下,构建HSP会生成tgz包)

"dependencies": {"package": "file:../package.tgz"}

依赖设置完成后,需要执行ohpm install命令安装依赖包,依赖包会存储在对应模块的oh_modules目录下。

一个模块如果引入本地HAR/HSP包,此模块中的确会出现该模块所依赖的所有模块的全部文件内容,由于相关依赖包(引入的本地HAR/HSP)会存储在对应模块的oh_modules目录下,所以如果修改oh_modules目录下的依赖包,本地HAR/HSP包会同步修改。

开发者您是想要本地HAR/HSP包,不想要每个模块中都出现了该模块所依赖的所有模块的全部文件内容吗?可以详细描述下您的诉求吗?

更多关于HarmonyOS鸿蒙Next中关于模块中出现依赖模块的全部文件内容的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我就是很疑惑,因为在通过ohpm install安装后,每个目录就出现了依赖文件。如果这是正常情况,就放心了。

在HarmonyOS NEXT中,模块依赖通过oh-package.json5声明,依赖模块的文件自动存放于oh_modules目录,不会直接出现在当前模块目录。若当前模块目录出现依赖模块的全部文件,可能是构建缓存未清理或模块配置重复引用。清理项目缓存(如删除oh_modulesbuild目录)并重新同步依赖即可解决。

您遇到的现象很可能是本地依赖被错误处理为硬链接文件引用。当通过终端下载三方库时,如果依赖声明使用了本地路径(如 file:../someLib)或包管理器创建了符号链接/硬链接,就会导致依赖模块的全部文件以链接形式“出现”在当前模块中;修改这些文件实际修改的是同一物理文件,因此原模块也会同步变更。

解决方案:

  1. 检查各模块的 oh-package.json5(或 package.json)中依赖声明,确认是否误用了本地 file: 协议指向其他模块目录。
  2. 删除各模块下的 oh_modules(或 node_modules)以及 oh-package-lock.json5(或锁文件),重新执行 ohpm install(或 npm install)。包管理器会按声明重新解析依赖,若为远程库则下载压缩包解压,不会与本地源模块共享文件。
  3. 如使用 ohpm linknpm link 进行调试,结束后及时执行 unlink 断开软链接。

核心是避免依赖解析指向本地正在开发中的模块目录,确保依赖副本独立,修改就不会互相污染。

回到顶部