Jest SecurityError:localStorage不适用于不透明的来源

2020/11/15 02:41 · javascript ·  · 0评论

当我想使用命令运行项目时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>)

万一您要使用http://localhost前缀访问您的应用程序,则需要更新jest配置(在中jest.config.js)为,

  "jest": {
    "verbose": true,
    "testURL": "http://localhost/"
  }

如果您还没有任何玩笑的配置,只需在中包含该配置package.json例如:

{
  "name": "...",
  "description": "...",
  ...
  "jest": {
    "verbose": true,
    "testURL": "http://localhost/"
  }
}

或在jest.config.js

module.exports = {
  verbose: true,
  testURL: "http://localhost/",
  ...
}

或是否已projects配置:

module.exports = {
  verbose: true,

  projects: [{
    runner: 'jest-runner',
    testURL: "http://localhost/",

    // ...
  }]
}

我只是在一个大型monorepo中进行了这种处理(在单元测试中,否则不需要jsdom)。在我们jest.config.js(或package.json同等产品)中明确设置以下内容也可以缓解该问题:

module.exports = {
  testEnvironment: 'node'
}

更新:正如下面的Nicolas提到的(谢谢!),如果您不使用任何配置文件,也可以添加以下标志:

jest --testEnvironment node    
# or 
jest --env=node

您必须指定--env要使用的环境()。

在中运行jest命令时,package.json应指定环境(jsdomnode)。例如:

  "scripts": {
    "jest": "jest --env=node --colors --coverage test",
    "test": "npm run jest"
  },

这应该为您工作!

如果您使用的是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/" });

添加testURL: "http://localhost"到我的Jest配置中最受好评的答案中的建议对我不起作用。但是,来自jsdom GitHub讨论的建议是在创建jsdom对象时传递URL。

const url = 'http://localhost';

const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', { url });

对我来说,这是通过升级到“ jest”:“ ^ 24.9.0”解决的,

要解决该Jest SecurityError: localStorage错误,您需要将jest: { ... }零件添加package.json文件中

{

"name": "...",
"version": "..",
"main": "..",
"description": "...",
...

"jest": { "verbose": true, "testURL": "http://localhost/" },

}

这听起来可能很愚蠢,但是对我来说,问题是由于我错误地使用安装了随机软件包而引起的npm update我当时正在跑步npm installnpm update但我只应该跑步npm install我通过删除node_modules目录并npm install再次运行来解决该问题

使用React JS时不需要做任何事情。放置JEST和设置测试环境是create-react-app的默认行为。在下面的运行中,它开始显示测试成功或失败,

npm测试

如果您想要测试覆盖率,只需将以下内容添加到package.json文件中

“ test”:“ react-scripts test --coverage”现在您的package.json的“脚本”看起来像,

"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --coverage",
"eject": "react-scripts eject"

}

与整合时enzyme这点对我突然弹出jestGithub上的问题探讨表明同上面提到的,即增加

"testURL": "http://localhost/"

开玩笑的配置。但是,很高兴知道这也是由酶触发的。对我来说是React v15和v15适配器。

我有同样的问题,将其放在package.json文件中对我来说很有效:

"jest": {
    "verbose": true,
    "testURL": "http://localhost/"
} 

如果您使用的是jsdom,则必须更改测试设置,如下所示:

const { JSDOM } = require('jsdom');
const jsdom = new JSDOM('<!doctype html><html><body></body></html>', {
  url: 'http://localhost/',
});```
本文地址:http://javascript.askforanswer.com/jest-securityerrorlocalstoragebushiyongyubutoumingdelaiyuan.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!