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

运行Jasmine测试时遭遇ERR_MODULE_NOT_FOUND错误求助

解决Jasmine ES模块环境下的ERR_MODULE_NOT_FOUND问题

核心排查方向及解决方案

1. 导入路径必须包含完整文件扩展名

ES模块(ESM)规范要求导入时必须指定完整的文件后缀(如.js),CommonJS允许省略扩展名的逻辑在ESM中不适用。检查sampleTestSpec.js的导入语句:

  • 错误写法:import LikeButtonInitiator from '../src/scripts/utils/like-button-initiator'
  • 正确写法:import LikeButtonInitiator from '../src/scripts/utils/like-button-initiator.js'

2. 适配Jasmine的ES模块加载逻辑

默认Jasmine可能沿用CommonJS加载器,需调整配置或启动方式:

  • 确保jasmine.json中spec_files的路径包含完整文件扩展名
  • 临时测试可使用兼容命令启动:node --experimental-specifier-resolution=node node_modules/jasmine/bin/jasmine.js(该参数允许Node自动补全ESM的文件扩展名,不推荐长期依赖)

3. 校验文件名大小写一致性

Windows文件系统不区分大小写,但Node的ESM解析严格区分大小写。检查导入路径的文件名大小写是否与实际文件完全匹配,比如实际文件是LikeButtonInitiator.js,导入时写like-button-initiator.js会导致解析失败。

4. 确认package.json的type字段位置

确保"type": "module"处于package.json的顶层字段,而非嵌套在其他配置内,正确示例:

{
  "name": "dicoding-expert-3",
  "type": "module",
  "devDependencies": {
    "jasmine": "^x.x.x"
  }
}

5. 清理Node模块缓存

Node可能缓存了旧的模块解析结果,执行命令清理后重新运行测试:

node --clear-module-cache

6. 升级Jasmine至支持ESM的版本

旧版Jasmine对ES模块的支持存在缺陷,升级到最新稳定版:

npm install jasmine@latest --save-dev

内容的提问来源于stack exchange,提问作者Faris Helmi Permana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:35:02