鸿蒙NEXT版实战开发:编译报错“Cannot find module XXX or its correspond ...

打印 上一主题 下一主题

主题 1659|帖子 1659|积分 4977

往期鸿蒙全套实战文章必看:(附带鸿蒙全栈学习资料)



  • 鸿蒙开发核心知识点,看这篇文章就够了
  • 最新版!鸿蒙HarmonyOS Next应用开发实战学习门路
  • 鸿蒙HarmonyOS NEXT开发技能最全学习门路指南
  • 鸿蒙应用开发实战项目,看这一篇文章就够了(部分项目附源码)

编译报错“Cannot find module XXX or its corresponding type declarations”



  • 场景一: 问题征象
    Stage模板工程编译引用native文件(.so) 提示 "Cannot find module XXX or its corresponding type declarations."。
    解决步伐
    当前Stage工程在编译构建阶段新增对native文件(.so)导出符号的语法校验,如果引用了没有对应声明文件(.d.ts)的native文件(.so)的现有工程在编译构建阶段,语法校验工具便会报错提示找不到对应的声明文件。
    如果出现雷同问题,可尝试通过如下方式举行解决:

    • 在对应cpp目录下新建types/libxxx目录,并在该目录下新增index.d.ts用于声明native的范例符号;新增oh-package.json5配置文件用于校验工具的模块查询。



    • 在native引用的模块内的oh-package.json5中添加native模块的当地依赖,并根据IDE提示点击Sync Now同步工程,下图以entry模块引用native模块为例。




  • 场景二: 问题征象
    API 11 Stage模子工程编译失败,提示“Cannot find module '@kit.xxx' or its corresponding type declarations”。


    问题缘故原由
    出现该问题的缘故原由是使用DevEco Studio NEXT Developer Preview1及之后版本,新创建的API 11 Stage模子的模板文件里面使用的import方式,全部改为了import xxx from '@kit.xxx'的方式,若SDK使用的是HarmonyOS NEXT Developer Preview1之前的版本,将会出现编译报错,因为旧的SDK不支持此类方式导入。
    解决步伐
    如果出现雷同问题,需要对SDK举行升级或升级DevEco Studio。

    • 如果使用的是DevEco Studio NEXT Developer Preview1至HarmonyOS NEXT Developer Beta1(5.0.3.300)之间的版本,在菜单栏点击Tool > SDK Manager,将SDK升级至HarmonyOS NEXT Developer Preview1及以上版本后,重新举行编译。
    • 如果使用的是HarmonyOS NEXT Developer Beta1(5.0.3.300)及以上的版本,SDK随DevEco Studio软件包安装,无需单独下载,请在下载中心下载并使用新版本DevEco Studio。

  • 场景三: 问题征象
    引用三方包,构建失败,提示“Cannot find module 'xxx' or its corresponding type declarations”。


    解决步伐
    进入对应模块级oh-package.json5文件或工程级oh-package.json5文件中查看三方包是否已安装,若未安装,需实行ohpm install安装;若已安装,需查看“main”字段是否配置精确,若未配置或配置错误,需配置为精确的入口文件。
  • 场景四: 问题征象
    引用的包路径被肴杂,代码中又是在引用包后面拼接了路径,导致模块引用不到而报错。
    比方:


    代码中如许引用

    如许引用会找不到模块,导致报错。
    解决步伐
    修改引用方式,改为保举的引用方式。


  • 场景五: 问题征象
    被引用模块oh_package.json5配置有误,实行了ohpm install 并且成功地安装了依赖,但是还报错模块找不到。


    被引用模块的 oh_package.json5 中配置了错误的types字段。
    该字段优先于main字段。 如果 types 字段配置的不存在,就会报错模块找不到。


    解决步伐
    如果该包中没有d.ets声明,则这个字段可以删除。配置不存在或者错误,会导致报错。
  • 场景六: 问题征象
    oh_package.json5中dependencies中引入模块的名称和实际使用时import的不同等。
    比方在oh_package.json5 中如许引入:
  1. "dependencies": {   "har": "file:../har" }
复制代码
但是实际上在代码中import的时候是大写 HAR或者其他而不是dependencies里面配置的‘har’的值,要留意保持完全同等。(目前windows 没有问题,linux会报错模块找不到)

解决步伐
引入和使用改成同等。


  • 场景七: 问题征象
    引用模块的oh_package.json5中main字段值和实际的文件名称大小写不同等。
    解决步伐
    将main字段和实际文件名称的大小写改为同等。
  • 场景八问题征象
    Stage模板工程编译构建失败,提示 "Cannot find module '@bundle:rollup_plugin_ignore_empty_module_placeholder' or its corresponding type declarations"。


    解决步伐
    该问题是由于工程引用了无对应实现文件的.d.ts声明文件:

    • 通过在build目录中搜索'rollup_plugin_ignore_empty_module_placeholder',找到报错的中间文件,并根据中间文件找到对应工程文件。

      在输入栏中输入rollup_plugin_ignore_empty_module_placeholder,找到问题模块的中间文件。


    • 在引用范例文件中通过添加type显式声明符号范例引用:
      1. export type {T} from './type';
      复制代码

    • 同时排查是否从d.ts/d.ets中引用值范例符号,禁止在声明文件中声明值变量。




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

写过一篇

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表