Jest 单元测试报错: SyntaxError: Cannot use import statement outside a module - 解决方法
这个错误通常是由于 Jest 单元测试环境不支持使用 ES6 的模块导入语法所导致的。
解决这个问题的方法有两种:
-
使用 Babel 转换:在 Jest 配置文件中添加 Babel 转换的配置,以便 Jest 可以正确地处理 ES6 的模块导入语法。可以通过以下步骤来实现:
-
首先,确保已经安装了
@babel/preset-env和@babel/preset-react(如果你的项目中使用了 React)这两个 Babel 预设包。 -
在项目根目录下创建一个名为
babel.config.js的文件,并添加以下内容:module.exports = { presets: ['@babel/preset-env', '@babel/preset-react'], }; -
然后,在 Jest 配置文件中添加
transform配置项,指定要使用 Babel 进行转换:module.exports = { // ... transform: { '^.+\.jsx?$': 'babel-jest', }, };
-
-
使用 CommonJS 导入语法:将你的测试文件中的 ES6 模块导入语句改为使用 CommonJS 导入语法。例如,将
import语句改为require语句。这样 Jest 就可以正确地解析和执行你的测试文件。例如,将以下代码:
import { sum } from './math';改为:
const { sum } = require('./math');然后,你就可以运行 Jest 单元测试了。
请注意,第一种方法使用了 Babel 转换,可以更好地支持 ES6 的模块导入语法。第二种方法则是一种简单的替代方案,适用于不想配置 Babel 的情况。
原文地址: https://www.cveoy.top/t/topic/fNAj 著作权归作者所有。请勿转载和采集!