使用 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 来跑测试用例了。