类型错误:笑话:转换必须导出'process'函数jest

gxwragnw  于 2023-03-10  发布在  Jest
关注(0)|答案(4)|浏览(168)

运行“npm测试”时出现以下错误:

FAIL  __tests__/unit/domain/services/demo-service.ts
  ● Test suite failed to run

    TypeError: Jest: a transform must export a `process` function.

      at ScriptTransformer._getTransformer (node_modules/@jest/transform/build/ScriptTransformer.js:357:15)
      at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:419:28)
      at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:523:40)
      at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
gab6jxml

gab6jxml1#

ts-jest主要版本必须与jest主要版本匹配;例如:

{
  "devDependencies": {
    "jest": "^26.4.2",
    "ts-jest": "^26.3.0"
  }
}
wtlkbnrh

wtlkbnrh2#

可能是jest版本的问题,我尝试使用26.5.5,这对我很有效。
如果您使用的是npm,您可以安装以下软件包:

npm install jest@26.5.5 --save-dev
npm install ts-jest --save-dev
npm install ts-node --save-dev
npm install ts-loader --save-dev
6gpjuf90

6gpjuf903#

在我的例子中,配置使用babel-jest + @babel/preset-typescript而不是ts-jest
因此,我必须确保babel-jestjest具有相同的主版本。

{
  "devDependencies": {
    "@babel/preset-typescript": "7.16.7",
    "babel-jest": "26.6.3",
    "jest": "26.6.3"
  }
}
rbl8hiat

rbl8hiat4#

在我的例子中,我最初使用的是jest v24.x.x。当我更新到v 27.5.1时,我遇到了这个变压器问题。
我没有使用基于TS的项目,因此没有ts-jest依赖项。我通过更改

transform: {
    '^.+\\.js$': 'babel-jest',
    '^.+\\.(css|scss)$': 'jest-css-module',
  },

transform: {
    '^.+\\.js$': 'babel-jest',
    '^.+\\.(css|scss)$': 'jest-css-modules-transform', // made change here
  },

而且我还得补充一句

testEnvironment: 'jsdom',

属性添加到jest配置中,因为现在jest支持不同的测试环境(在v24.x.x中不是这样)。
如果您使用node env进行测试,则必须将core-js包和import安装到特定的测试文件中。

相关问题