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