Kiedy chcę uruchomić projekt za pomocą polecenia npm run test
, pojawia się poniższy błąd. Co jest tego przyczyną?
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
źródło
źródło
http://localhost:port...
,?jest
konfiguracji :-)Odpowiedzi:
W przypadku, gdy uzyskujesz dostęp do swojej aplikacji z
http://localhost
prefiksem, musisz zaktualizować konfigurację jest (w swojejjest.config.js
) jako,W przypadku, gdy nie masz jeszcze żadnej konfiguracji jest, po prostu dołącz ją do swojego
package.json
. Na przykład:lub w
jest.config.js
:lub jeśli
projects
skonfigurowałeś:źródło
jest
stronie github: github.com/facebook/jest/issues/6766jest --testURL=\"http://localhost\"
. Przydatne, jeśli nie możesz ustawić globalnej konfiguracji żartów z powodu innego środowiska (skrypty reagujące dla mnie).testUrl
działało.Właśnie to pojawiło się w dużym monorepo (w testach jednostkowych, które w przeciwnym razie nie wymagałyby jsdom). Jawne ustawienie następujących w naszym
jest.config.js
(lubpackage.json
odpowiedniku) również rozwiązało ten problem:Aktualizacja: Jak wspomniał Nicolas poniżej (dzięki!), Możesz również dodać następujące flagi, jeśli nie używasz żadnych plików konfiguracyjnych:
źródło
jest --testEnvironment node
lub jego skrótjest --env=node
intead.testURL
.Musisz określić, jakiego środowiska (
--env
) zamierzasz używać.Po uruchomieniu
jest
polecenia w programiepackage.json
należy określić środowisko (jsdom
lubnode
). Na przykład:To powinno działać dla Ciebie!
źródło
env
pomocą konfiguracji, czy wiersza poleceń. Zaczęło się to dziać dopiero dzisiaj od najnowszej aktualizacji jest. Zapoznaj się z odpowiedzią @David R., aby uzyskać rozwiązanie, jeśli tak jest w Twoim przypadku.Jeśli używasz jsdom, upewnij się, że dołączasz url.
Proste opcje repozytorium jsdom Checkout. https://github.com/jsdom/jsdom#simple-options
źródło
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
. Na przykład, ten kod może zostać zapisany wtestHelper.ts
pliku o nazwie i używając mocha:scripts: { test-setup: 'mocha --compilers ts:ts-node/register,tsx:ts-nocde/register --require testHelper.ts --reporter progress' }
.Sugestia w najwyżej ocenianej odpowiedzi dodania
testURL: "http://localhost"
do mojej konfiguracji Jest nie zadziałała dla mnie. Jednak ta sugestia z dyskusji na temat jsdom GitHub , dotycząca przekazywania adresu URL podczas tworzenia obiektu jsdom, sprawdziła się.źródło
dla mnie problem ten został rozwiązany poprzez uaktualnienie do "jest": "^ 24.9.0",
źródło
Może to zabrzmieć głupio, ale dla mnie problem był spowodowany tym, że omyłkowo zainstalowałem przypadkowe pakiety z
npm update
. Biegałemnpm install
i wtedy,npm update
ale powinienem był tylko biecnpm install
. Naprawiłem problem, usuwającnode_modules
katalog i uruchamiającnpm install
ponownie.źródło
npm install
poprawnie z powodu korporacyjnego proxy. Tak więc, wzór będzie niezrealizowanenpm install
acjiPodczas pracy z React JS nie musisz nic robić. Domyślnym zachowaniem aplikacji create-react-app jest umieszczanie JEST i konfigurowanie środowiska testowego. Po uruchomieniu poniżej zaczyna pokazywać sukces lub porażkę testu,
Jeśli chcesz pokryć test, wystarczy dodać poniżej do pliku package.json
}
źródło
Pojawiło się to we mnie podczas integracji
enzyme
zjest
. Dyskusja Github Problem wskazują takie same, jak wspomniano powyżej, a mianowicie dodawaniedo konfiguracji jest. Jednak dobrze jest wiedzieć, że jest to wyzwalane również przez enzym. Dla mnie był to React v15 i adapter v15.
źródło
Mam ten sam problem i umieszczenie tego w moim
package.json
pliku zadziałało:źródło
Aby rozwiązać problem
Jest SecurityError: localStorage
, musisz dodaćjest: { ... }
część do pliku package.jsonźródło