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

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环境,操作如下:

  1. 安装jsdom依赖:
npm install jsdom --save-dev
  1. 在package.json的jest配置中补充testEnvironment:
"jest": {
  "transform": {},
  "moduleFileExtensions": ["js", "jsx"],
  "testEnvironment": "jsdom"
}

验证配置

运行测试命令确认问题是否解决:

npm test

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:12:42