Jest报错:SyntaxError: Cannot use import statement outside a module 求助
解决Jest中"Cannot use import statement outside a module"报错
第一步:修复package.json的无效配置
你当前的package.json存在重复的"test"字段,这会导致配置失效。需要将NODE_OPTIONS整合到scripts的test命令中,并添加必要的Jest配置:
修改后的package.json片段:
{ "type": "module", "scripts": { "test": "NODE_OPTIONS='--experimental-vm-modules' jest --coverage --detectOpenHandles" }, "jest": { "transform": {}, "moduleFileExtensions": ["js", "jsx"] } }
type: "module"告知Node.js项目采用ESM模块规范--experimental-vm-modules启用Jest对ESM的支持transform: {}禁用Babel转译(满足你无需Babel的需求)moduleFileExtensions指定Jest需要识别的文件扩展名
第二步:对齐测试文件与源文件的模块规范
- 测试文件(如
Inventory.test.js)需使用import语句引入目标函数,与Inventory.js的模块风格保持一致 - 若测试文件仍报错,可将扩展名改为
.mjs,强制指定为ESM模块
第三步:升级Jest到支持ESM的稳定版本
Jest 28及以上版本对ESM的支持更完善,若当前版本较低,执行升级命令:
npm install jest@latest --save-dev
第四步:添加React项目必需的测试环境(可选)
React项目测试组件相关代码需要jsdom环境,操作如下:
- 安装jsdom依赖:
npm install jsdom --save-dev
- 在package.json的jest配置中补充
testEnvironment:
"jest": { "transform": {}, "moduleFileExtensions": ["js", "jsx"], "testEnvironment": "jsdom" }
验证配置
运行测试命令确认问题是否解决:
npm test
内容的提问来源于stack exchange,提问作者Araf Harun
相关产品推荐
相关产品推荐

