HarmonyOS鸿蒙Next中使用动态模块,按照文档配置,为什么代码报错?

HarmonyOS鸿蒙Next中使用动态模块,按照文档配置,为什么代码报错? 这里导入模块为什么报错?

cke_457.png


更多关于HarmonyOS鸿蒙Next中使用动态模块,按照文档配置,为什么代码报错?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

import导入的参数,是需要和AModulelib 模块中oh-package.json5中 "name"保持一致。同时,还要确定,entry中的oh-package.json5配置当前模块动态本地库依赖,引入同级父目录下的 AModulelib HSP 动态模块。并且,AModulelib 模块中Index.ets要导出创建的方法。

cke_706.png

cke_942.png

更多关于HarmonyOS鸿蒙Next中使用动态模块,按照文档配置,为什么代码报错?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


动态模块配置需检查module.json5type字段为"feature"dynamicDeliver设为"installTime""onDemand"。同时确认工程已启用动态特性(build-profile.json5compileSdkVersion≥8)。代码报错可能因未使用resourceManager.getDynamicResource()访问动态资源,或动态模块HAP未正确打包上传。检查IDE日志中是否有DynamicLoad相关错误。

代码报错提示“找不到模块,是否希望改为动态导入?”是因为动态模块(HSP)不支持静态import

HSP 模块的加载机制决定了它只能在运行时通过动态import() 获取,不能像普通模块那样在编译时静态引入。

错误写法:

import { MyComponent } from 'library';

正确写法(必须动态导入):

import('library').then((module) => {
  module.MyComponent;
});

或者函数内返回:

const module = await import('library');

如果模块是本地HAR静态共享包,才允许静态import。但动态HSP就是运行时按需加载,不存在于编译时的模块解析路径中,所以静态导入必然报错。

回到顶部