使用Jest测试ES6类时报import语法错误如何解决?
错误原因
你项目中使用了ES模块的import/export语法,但你安装的Jest 27版本默认使用CommonJS模块解析规则,未开启ES模块原生支持,因此无法识别import语句,触发语法报错。
解决方案
以下提供两种常用的可行方案,按需选择即可:
方案1:开启Jest原生ES模块支持(无需额外引入转译工具)
- 修改
package.json中的test脚本,替换为如下内容:
"scripts": { "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js" }
- 在
package.json中新增Jest配置字段,关闭默认转译规则:
"jest": { "testEnvironment": "node", "transform": {} }
- 直接运行
npm run test即可正常执行测试。
方案2:通过Babel转译ES模块(兼容性更好,适合多环境项目)
- 首先安装所需开发依赖:
npm install --save-dev @babel/core @babel/preset-env babel-jest - 在项目根目录新建
babel.config.json配置文件,内容如下:
{ "presets": [["@babel/preset-env", { "targets": { "node": "current" } }]] }
- (可选)在
package.json中补充Jest配置,确认转译规则:
"jest": { "transform": { "^.+\\.js$": "babel-jest" } }
- 运行
npm run test即可完成测试执行。
验证结果
配置完成后执行测试,你将看到如下通过提示:
PASS tests/myClass.test.js ✓ Calculate (2 ms) Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

