You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NEAR CRUD dApp使用as-pect测试时出现ERR_REQUIRE_ESM错误排查求助

解决as-pect测试时的ES模块/CommonJS加载冲突问题

你遇到的核心问题是ES模块与CommonJS模块的加载兼容性冲突:as-pect的CLI目前基于CommonJS编写,而你的项目package.json中设置了"type": "module",这会让项目内所有.js文件被默认识别为ES模块,导致as-pect用require()加载as-pect.config.js时触发错误。官方示例能正常运行,正是因为它的package.json没有设置"type": "module",默认采用CommonJS规范,和as-pect的CLI完全兼容。

推荐的解决方法

方法1:修改package.json的模块类型(最简便)

直接删除package.json中的"type": "module"字段,或者将其改为"type": "commonjs":

{
  // ... 其他配置项
  "type": "commonjs", // 或者直接移除这个字段,默认就是CommonJS规范
  // ... 其他配置项
}

修改后,项目内的.js文件会被当作CommonJS模块,as-pect的require()就能正常加载配置文件了。如果你的项目确实需要使用ES模块,可以把对应文件的后缀改为.mjs,CommonJS文件保持.js后缀即可。

方法2:修改as-pect配置文件的后缀

保持package.json的"type": "module"不变,将as-pect.config.js重命名为as-pect.config.cjs(.cjs后缀明确表示这是CommonJS模块),然后更新package.json中的测试命令:

{
  "scripts": {
    // ... 其他脚本
    "test": "asp --config as-pect.config.cjs"
  }
}

这样as-pect会加载这个CommonJS格式的配置文件,和它的CLI实现兼容。

方法3:使用动态import(不推荐)

这个方法需要修改as-pect依赖的源码,将require()调用改为动态import(),但不建议这么做——依赖更新后你的修改会被覆盖,维护成本极高,仅作为极端情况下的备选方案。

额外小提示

你的package.json中devDependencies和dependencies重复声明了assemblyscript,建议清理重复项,只保留在devDependencies中即可(它属于开发阶段依赖)。

修改完成后,重新运行yarn test应该就能正常执行测试了。

内容的提问来源于stack exchange,提问作者malibil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 21:43:10