JEST 单元测试脚本失败并出现 TypeError: this._environment.runScript 不是函数

Tol*_*iNY 8 javascript unit-testing jestjs vuejs2

我被分配了一项为 Vue 应用程序设置 Jest 单元测试的任务。由于这里的其他问题,我多次尝试完成它并解决了几个问题。但是,现在我在执行时遇到以下错误npm run test:unit("test:unit": "vue-cli-service test:unit"):

TypeError: this._environment.runScript is not a function

  at Runtime._execModule (node_modules/@vue/cli-plugin-unit-jest/node_modules/jest-runtime/build/index.js:856:41)
Run Code Online (Sandbox Code Playgroud)

以下是我添加到 package.json 中的 Jest 配置:

"jest": {
    "testEnvironment": "jsdom",
    "preset": "ts-jest",
    "moduleNameMapper": {
      "\\.(css|less|sass|scss)$": "<rootDir>/tests/mocks/styleMock.js",
      "^@/(.*)$": "<rootDir>/src/$1"
    },
    "transform": {
      "<rootDir>/src/data/.+\\.(j|t)sx?$": "ts-jest",
      ".*\\.(vue)$": "vue-jest",
      ".*\\.(js)$": "babel-jest"
    },
    "transformIgnorePatterns": [
      "/node_modules/(?!vuetify)",
      "<rootDir>/src/(?!data/.*)"
    ],
    "testPathIgnorePatterns": [
      "/node_modules/(?!vuetify)"
    ]
  }
Run Code Online (Sandbox Code Playgroud)

最初,我有用于测试环境的“节点”。但我第一次收到 this._environment.runScript is not a function 错误。我读到可以使用“jsdom”代替。为此我更新了 babel.config.js:

module.exports = {
   env: {
     test: {
       presets: [['env', { targets: { node: 'current' } }]],
       plugins: ['@babel/plugin-transform-modules-commonjs'],
     },
   },
}
Run Code Online (Sandbox Code Playgroud)

但这导致错误提示 babel-preset-env 模块丢失。据我了解,该模块不再是一个独立的模块。所以,我改变了 babel.config.js:

module.exports = {
  presets: [
    [
      '@babel/preset-env',
      {
        modules: 'commonjs',
        targets: {
          node: 'current',
        },
      },
    ],
  ],
}
Run Code Online (Sandbox Code Playgroud)

现在我又回到了 TypeError:this._environment.runScript 不是一个函数。有人遇到过类似的问题吗?将不胜感激您的帮助。

Dan*_*iel 0

我遇到了同样的错误,并通过设置相同版本的jest和来修复ts-jest。就我而言^27.1.1