开玩笑:无法读取testEnvironmentOptions

问题描述 投票:0回答:6

我在 Jest 中遇到以下错误,但即使添加了 testEnvironmentOptions 也不清楚为什么

       TypeError: Cannot read properties of undefined (reading 'testEnvironmentOptions')
    
          at new JSDOMEnvironment (node_modules/jest-environment-jsdom/build/index.js:72:28)
          at async TestScheduler.scheduleTests (node_modules/@jest/core/build/TestScheduler.js:333:13)
          at async runJest (node_modules/@jest/core/build/runJest.js:404:19)

这是我的

package.json
中的 Jest 配置:

    "jest": {
        "moduleNameMapper": {
          "^@/(.*)$": "<rootDir>/$1",
          "^~/(.*)$": "<rootDir>/$1",
          "^vue$": "vue/dist/vue.common.js"
        },
        "testEnvironment": "jsdom",
        "testEnvironmentOptions": {
          "browsers": [
            "chrome",
            "firefox",
            "safari"
          ]
        },
        "moduleFileExtensions": [
          "vue",
          "js",
          "json"
        ],
        "transformIgnorePatterns": [
          "/node_modules/(?!crypto-random-string)"
        ],
        "transform": {
          "^.+\\.js$": "<rootDir>/node_modules/babel-jest",
          ".*\\.(vue)$": "<rootDir>/node_modules/vue-jest"
        },
        "collectCoverage": true,
        "collectCoverageFrom": [
          "<rootDir>/src/**/*.vue",
          "<rootDir>/src/**/*.js"
        ]
      }
unit-testing jestjs
6个回答
79
投票

确保您安装了同一版本的

jest
jest-environment-jsdom
软件包。后者需要从
jest
版本 28 开始单独安装。当我将
jest
降级到 27.x 但不是
jest-environment-jsdom
时,我遇到了同样的问题。查看版本27到28关于使用JSDOM测试环境的升级指南


7
投票

我有不同版本的 local jestglobal jest,jest-environment-jsdom 没有全局安装。这给我带来了问题。通过

在本地运行
./node_modules/jest/bin/jest.js src/my-test.spec.ts

或者更新全局笑话包为我完成了这项工作。 我看到上面的评论之一提到了这一点,但不知怎的,我错过了它并花了太多时间,所以将其发布在这里


4
投票

对于我来说跑步

npx browserslist@latest --update-db

完成工作


2
投票

我使用

yarn jest
而不是
jest
来运行测试并且它有效。


2
投票

对于那些仍然需要解决方案的人,请尝试检查您是否有有问题的库的全局版本(在本例中为“jest-environment-node”)。

如果您已全局安装它并且版本不同(与正在运行的项目版本),您将收到错误。

当我尝试运行yarn start时,我对“jest”和“babel-jest”有同样的问题(出现一个以“项目依赖树可能有问题”开头的长错误)

从全局路径中删除这些文件夹解决了问题。

Mac 中的全局路径通常是 /Users/{user}/node_modules/

祝你好运。


0
投票

我删除了

testEnvironment: 'node'
,它工作得很好

© www.soinside.com 2019 - 2024. All rights reserved.