运行Jest时报错SyntaxError: Cannot use import statement outside a module如何解决
问题原因
该错误是因为Jest默认将测试文件识别为CommonJS模块,不支持直接使用ES模块的import语法。
解决方案
方案1:移除多余导入(推荐)
Jest默认已经将describe、it、expect等测试API注入到所有测试文件的全局作用域,无需手动导入,直接删除这行import代码即可正常运行测试。
方案2:改用CommonJS导入语法
如果确实需要显式导入相关API,可将ES模块写法替换为CommonJS的require写法:
const { describe, it, expect } = require('@jest/globals');
方案3:开启Jest ES模块支持
如果项目整体使用ES模块规范,可按以下步骤配置:
- 在项目
package.json中添加字段"type": "module",告知Node.js所有.js文件默认按ES模块处理 - 调整Jest配置(可放在
jest.config.js或package.json的jest字段中):
export default { testEnvironment: "node", transform: {} }
- 修改
package.json中的测试运行脚本,添加Node.js ES模块实验参数:
{ "scripts": { "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js" } }
内容的提问来源于stack exchange,提问作者wristbands
相关产品推荐
相关产品推荐

