使用 jest 编写测试用例时,如果使用了 import 语句,jest 会以下错误:

SyntaxError: Cannot use import statement outside a module

默认情况下 jest 只支持 commonjs 的模块引入方式,不支持 es6 的模块引入方式。这需要 babel 进行代码转换。

解决步骤

在根目录创建 babel.config.js.babelrc 文件(如果有则更新)

安装 jest,ts-jest,babel-jest,@babel/preset-env 依赖

pnpm i jest ts-jest babel-jest @babel/preset-env

babel.config.js 新增 presets 配置

module.exports = { presets: ['@babel/preset-env'] };

jest.config.js 配置如下

module.exports = {
preset: 'ts-jest',
transform: {
'^.+\\.(ts|tsx)?$': 'ts-jest',
'^.+\\.(js|jsx)$': 'babel-jest',
},
};

最后在 package.json 里面新增 script 命令

{
"test": "jest"
}

现在可以通过 pnpm run test 来跑测试用例了。