运行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
相关产品推荐
相关产品推荐

