Jest报错:node.js SyntaxError: 无法在模块外使用import语句
解决Jest报错:node.js SyntaxError: Cannot use import statement outside a module
你的问题源于项目启用了ES模块(package.json中设置了"type": "module"),但Jest默认采用CommonJS模块系统,无法识别ES模块的import/export语法,从而触发报错。以下是具体解决步骤:
步骤1:安装Babel相关依赖
Jest需要通过Babel转译ES模块语法到Node支持的格式,执行命令安装依赖:
npm install --save-dev babel-jest @babel/core @babel/preset-env
步骤2:配置Babel
在项目根目录创建babel.config.json文件,添加配置:
{ "presets": [["@babel/preset-env", {"targets": {"node": "current"}}]] }
该配置会让Babel将ES模块代码转译为当前Node版本兼容的语法。
步骤3:配置Jest(可选)
在package.json中添加Jest专属配置,明确指定用Babel转译JS文件:
{ // ...原有配置内容 "jest": { "transform": { "^.+\\.js$": "babel-jest" } } }
验证测试文件格式
确保你的测试文件使用ES模块语法导入目标函数,示例如下:
import { calculateTip } from './Language.js'; test('小费计算结果正确', () => { expect(calculateTip(100, 10)).toBe(111); });
完成以上步骤后,重新运行npm test命令,即可正常执行测试。
内容的提问来源于stack exchange,提问作者Mr.Singh
相关产品推荐
相关产品推荐

