HarmonyOS 本地 HAR 包嵌套引用配置指南
·
一、背景
当一个 HAR 包(如 b.har)内部依赖另一个 HAR 包(如 a.har),且两个包都以本地文件形式放在工程里时,需要同时在模块级和工程级 oh-package.json5 中做正确配置,否则会出现 bbb 找不到 aaa 的问题。
ohpm ERROR: Run install command failed
Error: 00617202 Fetch Local Package Failed
Error Message: Fetch local file package error, /Users/wangwh-146538/Documents/e68harmony-domestic/oh_modules/.ohpm/b@gtzr05au10dw6nhxacclguuv2xy5djthket31qbfxpc=/oh_modules/libs/a.har does not exist.
二、工程配置
1. 目录结构示例
MyApplication/
├── AppScope/
├── entry/
│ └── oh-package.json5
├── libs/
│ ├── a.har
│ └── b.har
└── oh-package.json5 ← 工程级配置(关键)
2. 被依赖的 HAR 包(b)的源工程配置
在 b 模块自己的 oh-package.json5 中,要正确声明对 a 的依赖:
{
"name": "b",
"version": "1.0.0",
"dependencies": {
"aaa": "file:../libs/a.har" // 打包时 bbb.har 内部会记录对 aaa 的依赖
}
}
注意:b.har 打包后,它内部对 aaa 的依赖不会被打包进去,只是记录依赖关系。消费方(如 entry)解析 b 时,仍需要能找到 a。
3. 宿主工程(entry)的模块级配置
在 entry/oh-package.json5 中显式声明两个 HAR:
{
"name": "entry",
"version": "1.0.0",
"dependencies": {
"a": "file:../libs/a.har",
"b": "file:../libs/b.har"
}
}
说明:HAR 不支持依赖传递,即 entry → bbb → aaa 这种链式依赖,entry 无法直接使用 aaa 的导出,必须显式声明对 aaa 的依赖。
4. 工程级 oh-package.json5 配置
由于 b.har 内部记录的是 a 的包名依赖,ohpm 在解析 b 时会去找名为 a 的包,但默认找不到你本地 libs/ 下的那个文件。解决办法是在工程根目录 oh-package.json5 中使用 overrides 强制重定向:
{
"modelVersion": "5.0.0",
"description": "",
"dependencies": {
"a": "file:./libs/a.har",
"b": "file:./libs/b.har"
},
"devDependencies": {
"@ohos/hypium": "1.0.19"
},
"overrides": {
// 核心配置:拦截全工程(包括 b 内部)对 a 的请求,
// 重定向到本地具体 .har 文件路径
"a": "file:./libs/a.har"
}
}
更多推荐




所有评论(0)