HarmonyOS 鸿蒙Next oh-packages.json5中的依赖支持传递么?

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next oh-packages.json5中的依赖支持传递么?

请问一下模块A依赖了模块B,模块B依赖了模块C,如果模块A也需要依赖模块C,在模块A种也必须要添加模块C的依赖么?是不是有像gradle里的api和implmentation的区分,谢谢!

6 回复
然而不可以,我的network依赖了axios,common模块依赖了network, 如果network不在Index.ets中特别export,在common模块中是无法引用到axios的。

你好,请问怎么在common中导出axios。index.ts中 export * from … 怎么写呢?

幽灵依赖问题:

   间接依赖的版本是不可控的,如果代码里使用到某个版本的间接依赖,不同时间安装的依赖可能版本不一致,程序运行可能出现意想不到的错误。

举例说明:

   依赖关系是project->A(1.0.0)->B(^1.0.0)->C (latest),在dependencies只声明了A,但是工程中import了B和C。而B和C的版本是不可控的,如果C的开发者发布了一个2.0.0的版本,下次安装依赖时,可能会安装C [@2](/user/2).0.0的版本。然后就有可能出现一些玄学问题,例如:在代码没有任何改动的情况下,程序运行却出现报错,不同时间不同PC上构建的应用运行表现不一致等。

所以ohpm为了解决幽灵依赖的问题,设计了一个特殊的存储结构,从技术上进行限制、不允许引用间接依赖,从而避免出现幽灵依赖问题。在上面例子中表现就是:代码里只能引用A,引用B或C就会编译报错,提醒用户修改依赖配置。

多谢回复,这个问题确实存在,以前我在团队中也不允许使用latest作为版本号,只不过通常har对某个第三方包进行了封装,一般不会封装的这么完整,使用方还是有可能需要引用一些第三方的对象;现在这样就需要在使用方再引用一下第三方。

你好,问下你这个后来是怎么解决的呢,如果你的 A 确实想要使用 C 的话,直接通过 B 来开放 C 的接口?

HarmonyOS(鸿蒙)在oh-packages.json5文件中定义的依赖主要用于管理HarmonyOS项目的模块和库依赖。关于依赖的传递性,HarmonyOS的依赖管理机制通常支持一定程度的传递依赖,即如果你直接依赖了一个库,而这个库又依赖于其他库,那么这些被依赖的库也会被自动引入到你的项目中(在符合版本兼容性的前提下)。不过,具体实现和细节可能随版本更新而变化。如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部