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

当我想使用命令运行项目时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>)
逆天Gil2020/04/03 12:15:30

使用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"

}

小胖2020/04/03 12:15:30

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

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

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

飞云2020/04/03 12:15:30

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

老丝2020/04/03 12:15:30

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

Stafan2020/04/03 12:15:30

如果使用的是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/" });
Itachi2020/04/03 12:15:30

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

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

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

这应该为您工作!