Quando quero executar meu projeto com o comando npm run test
, recebo o erro abaixo. O quê está causando isto?
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>)
javascript
node.js
npm
jestjs
amirdehghan
fonte
fonte
http://localhost:port...
,?jest
configuração :-)Respostas:
No caso, se você estiver acessando seu aplicativo com um
http://localhost
prefixo, precisará atualizar sua configuração de gracejo (no seujest.config.js
) como,Caso você ainda não tenha nenhuma configuração de brincadeira, inclua a configuração no seu
package.json
. Por exemplo:ou em
jest.config.js
:ou se você
projects
configurou:fonte
jest
página do github: github.com/facebook/jest/issues/6766jest --testURL=\"http://localhost\"
. Útil se você não pode definir uma configuração global de gracejo por causa de outro ambiente (scripts de reação para mim).testUrl
funcionou.Eu acabei de aparecer em um grande monorepo (em testes de unidade, que de outra forma não exigiria jsdom). Definir explicitamente o seguinte em nosso
jest.config.js
(oupackage.json
equivalente) também aliviou esse problema:Atualização: Como Nicolas mencionou abaixo (obrigado!), Você também pode adicionar os seguintes sinalizadores se não estiver usando nenhum arquivo de configuração:
fonte
jest --testEnvironment node
ou em sua abreviaçãojest --env=node
, intead.testURL
.Você deve especificar qual ambiente (
--env
) você vai usar.Ao executar o
jest
comando no,package.json
você deve especificar o ambiente (jsdom
ounode
). Por exemplo:Isso deve funcionar para você!
fonte
env
via config ou linha de comando. Isso só começou a acontecer com a atualização mais recente de brincadeira hoje. Consulte a resposta de @David R para obter uma solução, se esse for o seu caso.Se você estiver usando jsdom, certifique-se de incluir o URL.
Repositório jsdom repositório de opções simples. https://github.com/jsdom/jsdom#simple-options
fonte
var jsdom = require('jsdom'); var exposedProperties = ['window', 'navigator', 'document']; const { JSDOM } = jsdom; const {document } = (new JSDOM('',{ url: "https://localhost/",})).window; global.document = document;
package.json
. Por exemplo, este código pode ser salvo em umtestHelper.ts
arquivo e chamado usando mocha:scripts: { test-setup: 'mocha --compilers ts:ts-node/register,tsx:ts-nocde/register --require testHelper.ts --reporter progress' }
.A sugestão na resposta mais votada de adicionar
testURL: "http://localhost"
à minha configuração do Jest não funcionou para mim. No entanto, essa sugestão da discussão do jsdom GitHub , de passar uma URL ao criar o objeto jsdom, foi o que aconteceu.fonte
para mim, isso foi resolvido com a atualização para "gracejo": "^ 24.9.0",
fonte
Isso pode parecer bobagem, mas para mim, o problema foi causado porque eu instalei pacotes aleatórios por engano
npm update
. Eu estava correndonpm install
e então,npm update
mas eu deveria ter apenas corridonpm install
. Corrigi o problema excluindo onode_modules
diretório e executandonpm install
novamente.fonte
npm install
corretamente devido ao proxy corporativo. Assim, o padrão seria incompletonpm install
çãoVocê não precisa fazer nada enquanto trabalha com o React JS. O comportamento padrão do create-react-app é colocar o JEST e configurar o ambiente de teste. Na execução abaixo, ele começa a mostrar o êxito ou falha do teste,
Caso você queira uma cobertura de teste, basta adicionar abaixo ao arquivo package.json
}
fonte
Isso apareceu comigo ao integrar
enzyme
comjest
. A discussão sobre questões do Github sugere o mesmo que mencionado acima, ou seja, adicionarpara a configuração de brincadeira. No entanto, é bom saber que isso também é desencadeado por enzimas. Para mim, foi o React v15 e o adaptador v15.
fonte
Eu tenho o mesmo problema e colocar isso no meu
package.json
arquivo funcionou para mim:fonte
Para resolver o
Jest SecurityError: localStorage
erro, você precisa adicionar ajest: { ... }
peça ao seu arquivo package.jsonfonte