我在 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"
]
}
确保您安装了同一版本的
jest
和 jest-environment-jsdom
软件包。后者需要从 jest
版本 28 开始单独安装。当我将 jest
降级到 27.x 但不是 jest-environment-jsdom
时,我遇到了同样的问题。查看版本27到28关于使用JSDOM测试环境的升级指南。
我有不同版本的 local jest 和 global jest,jest-environment-jsdom 没有全局安装。这给我带来了问题。通过
在本地运行./node_modules/jest/bin/jest.js src/my-test.spec.ts
或者更新全局笑话包为我完成了这项工作。 我看到上面的评论之一提到了这一点,但不知怎的,我错过了它并花了太多时间,所以将其发布在这里
对于我来说跑步
npx browserslist@latest --update-db
完成工作
我使用
yarn jest
而不是 jest
来运行测试并且它有效。
对于那些仍然需要解决方案的人,请尝试检查您是否有有问题的库的全局版本(在本例中为“jest-environment-node”)。
如果您已全局安装它并且版本不同(与正在运行的项目版本),您将收到错误。
当我尝试运行yarn start时,我对“jest”和“babel-jest”有同样的问题(出现一个以“项目依赖树可能有问题”开头的长错误)
从全局路径中删除这些文件夹解决了问题。
Mac 中的全局路径通常是 /Users/{user}/node_modules/
祝你好运。
我删除了
testEnvironment: 'node'
,它工作得很好