ami*_*han 140 javascript node.js npm jestjs
当我想用命令运行我的项目时npm run test,我得到以下错误.是什么造成的?
FAIL
? Test suite failed to run
SecurityError: localStorage is not available for opaque origins at Window.get localStorage [as localStorage] (node_modules/jsdom/lib/jsdom/browser/Window.js:257:15)
at Array.forEach (<anonymous>)
Run Code Online (Sandbox Code Playgroud)
Dav*_*d R 134
如果您使用http://localhost前缀访问您的应用程序,则需要更新您的jest配置(在您的jest.config.js)中,
"jest": {
"verbose": true,
"testURL": "http://localhost/"
}
Run Code Online (Sandbox Code Playgroud)
如果您还没有任何jest配置,只需在您的配置中包含配置package.json.例如:
{
"name": "...",
"description": "...",
...
"jest": {
"verbose": true,
"testURL": "http://localhost/"
}
}
Run Code Online (Sandbox Code Playgroud)
或者在jest.config.js:
module.exports = {
verbose: true,
testURL: "http://localhost/",
...
}
Run Code Online (Sandbox Code Playgroud)
或者如果您已projects配置:
module.exports = {
verbose: true,
projects: [{
runner: 'jest-runner',
testURL: "http://localhost/",
// ...
}]
}
Run Code Online (Sandbox Code Playgroud)
Bur*_*rgi 75
我只是在一个大的monorepo中出现了这种情况(在单元测试中,否则就不需要jsdom).在我们jest.config.js(或package.json等效的)中明确设置以下内容也缓解了这个问题:
module.exports = {
testEnvironment: 'node'
}
Run Code Online (Sandbox Code Playgroud)
更新:正如Nicolas在下面提到的(谢谢!),如果您没有使用任何配置文件,还可以添加以下标志:
jest --testEnvironment node
# or
jest --env=node
Run Code Online (Sandbox Code Playgroud)
小智 16
您必须指定--env要使用的环境().
在运行jest命令时,package.json应指定环境(jsdom或node).例如:
"scripts": {
"jest": "jest --env=node --colors --coverage test",
"test": "npm run jest"
},
Run Code Online (Sandbox Code Playgroud)
这对你有用!
小智 8
当我将 jest 更新到 v28.0.3 时,我遇到了这个问题。似乎在版本 28.0.0 中,他们废弃了 testUrl 并引入了一个对象 testEnvironmentOptions,其属性 url 的默认值是“http://localhost/”。
弃用警告:
选项“testURL”已替换为通过“testEnvironmentOptions.url”传递 URL。
请更新您的配置。
在这里查看 PR: https: //github.com/facebook/jest/pull/10797
然而,当我更新 jest-environment-jsdom 并在 jest.config.js 中设置 testEnvironment 时,我的问题消失了。
module.exports = {
...
testEnvironment: 'jest-environment-jsdom',
...
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是jsdom,请确保包含url。
检出jsdom存储库简单选项。https://github.com/jsdom/jsdom#simple-options
const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`...`, { url: "https://example.org/" });
Run Code Online (Sandbox Code Playgroud)
添加testURL: "http://localhost"到我的 Jest 配置的最受好评的答案中的建议对我不起作用。然而,来自 jsdom GitHub 讨论的这个建议,即在创建 jsdom 对象时传入一个 URL,确实如此。
const url = 'http://localhost';
const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', { url });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21163 次 |
| 最近记录: |