首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >localStorage SecurityError: Jest不适用于不透明的来源

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

Stack Overflow用户
提问于 2018-07-27 16:56:39
回答 12查看 28.7K关注 0票数 150

当我想用npm run test命令运行我的项目时,我得到了下面的错误。是什么导致了这种情况?

代码语言:javascript
运行
复制
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>)
EN

回答 12

Stack Overflow用户

发布于 2018-07-27 17:12:13

如果您使用http://localhost前缀访问应用程序,则需要将jest.config.js中的jest配置更新为,

代码语言:javascript
运行
复制
  "jest": {
    "verbose": true,
    "testURL": "http://localhost/"
  }

如果您还没有任何jest配置,只需在package.json中包含该配置即可。例如:

代码语言:javascript
运行
复制
{
  "name": "...",
  "description": "...",
  ...
  "jest": {
    "verbose": true,
    "testURL": "http://localhost/"
  }
}

或者在jest.config.js中:

代码语言:javascript
运行
复制
module.exports = {
  verbose: true,
  testURL: "http://localhost/",
  ...
}

或者,如果您配置了projects

代码语言:javascript
运行
复制
module.exports = {
  verbose: true,

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

    // ...
  }]
}
票数 147
EN

Stack Overflow用户

发布于 2018-07-27 18:05:24

我只是在一个很大的monorepo中突然出现了这个(在单元测试中,否则就不需要jsdom)。在我们的jest.config.js (或package.json等效项)中显式设置以下内容也可以缓解该问题:

代码语言:javascript
运行
复制
module.exports = {
  testEnvironment: 'node'
}

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

代码语言:javascript
运行
复制
jest --testEnvironment node    
# or 
jest --env=node
票数 79
EN

Stack Overflow用户

发布于 2018-07-27 20:05:52

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

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

代码语言:javascript
运行
复制
  "scripts": {
    "jest": "jest --env=node --colors --coverage test",
    "test": "npm run jest"
  },

这对你应该是有效的!

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51554366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档