Wenn ich mein Projekt mit dem Befehl ausführen möchte, wird npm run test
der folgende Fehler angezeigt. Was verursacht das?
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
quelle
quelle
http://localhost:port...
?jest
Konfiguration nicht stimmt :-)Antworten:
Falls Sie mit einem
http://localhost
Präfix auf Ihre Anwendung zugreifen , müssen Sie Ihre Scherzkonfiguration (in Ihrerjest.config.js
) wie folgt aktualisieren :Falls Sie noch keine Scherzkonfiguration haben, fügen Sie einfach die Konfiguration in Ihre ein
package.json
. Beispielsweise:oder in
jest.config.js
:oder wenn Sie
projects
konfiguriert haben:quelle
jest
Github-Seite besprochen : github.com/facebook/jest/issues/6766jest --testURL=\"http://localhost\"
. Nützlich, wenn Sie aufgrund einer anderen Umgebung keine globale Scherzkonfiguration festlegen können (React-Skripte für mich).testUrl
gearbeitet.Ich hatte gerade dieses Auftauchen in einem großen Monorepo (in Unit-Tests hätte das sonst kein jsdom erfordert). Das explizite Festlegen von Folgendem in unserem
jest.config.js
(oder einempackage.json
gleichwertigen) Beispiel hat dieses Problem ebenfalls behoben:Update: Wie Nicolas unten erwähnt hat (danke!), Können Sie auch die folgenden Flags hinzufügen, wenn Sie keine Konfigurationsdateien verwenden:
quelle
jest --testEnvironment node
oder deren Kurzformjest --env=node
intead ausführen.testURL
.Sie müssen angeben, welche Umgebung (
--env
) Sie verwenden möchten.Wenn Sie den
jest
Befehl in ausführenpackage.json
, sollten Sie die Umgebung (jsdom
odernode
) angeben . Beispielsweise:Das sollte für dich funktionieren!
quelle
env
Via-Konfiguration oder eine Befehlszeile angeben . Dies begann erst mit dem neuesten Update von jest heute. In der Antwort von @David R finden Sie eine Lösung, falls dies bei Ihnen der Fall ist.Wenn Sie jsdom verwenden, stellen Sie sicher, dass Sie die URL angeben.
Checkout jsdom Repository einfache Optionen. https://github.com/jsdom/jsdom#simple-options
quelle
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
. Zum Beispiel könnte dieser Code in einertestHelper.ts
Datei gespeichert und mit Mokka aufgerufen werden :scripts: { test-setup: 'mocha --compilers ts:ts-node/register,tsx:ts-nocde/register --require testHelper.ts --reporter progress' }
.Der Vorschlag in der am besten bewerteten Antwort
testURL: "http://localhost"
, meiner Jest-Konfiguration etwas hinzuzufügen , hat bei mir nicht funktioniert. Dieser Vorschlag aus der jsdom GitHub-Diskussion , beim Erstellen des jsdom-Objekts eine URL einzugeben, hat sich jedoch bewährt.quelle
Für mich wurde dies durch ein Upgrade auf "jest" gelöst: "^ 24.9.0",
quelle
Das mag albern klingen, aber für mich wurde das Problem verursacht, weil ich versehentlich zufällige Pakete mit installiert hatte
npm update
. Ich ranntenpm install
und dann,npm update
aber ich hätte nur rennen sollennpm install
. Ich habe das Problem behoben, indem ich dasnode_modules
Verzeichnis gelöscht undnpm install
erneut ausgeführt habe.quelle
npm install
aufgrund von Enterprise-Proxy nicht richtig fertig werden. So würde das Muster unvollendet seinnpm install
ationWährend der Arbeit mit React JS müssen Sie nichts tun. Es ist das Standardverhalten der Create-React-App, JEST zu platzieren und eine Testumgebung einzurichten. Beim Ausführen von unten wird der Erfolg oder Misserfolg des Tests angezeigt.
Wenn Sie eine Testabdeckung wünschen, müssen Sie lediglich die Datei package.json hinzufügen
}}
quelle
Dies tauchte bei mir bei der Integration
enzyme
mit aufjest
. Die Github-Problemdiskussion schlägt dasselbe wie oben erwähnt vor, nämlich das Hinzufügenzur Scherzkonfiguration. Es ist jedoch gut zu wissen, dass dies auch durch Enzyme ausgelöst wird. Für mich war es React v15 und der v15-Adapter.
quelle
Ich habe das gleiche Problem und das Einfügen in meine
package.json
Datei hat bei mir funktioniert:quelle
Um den
Jest SecurityError: localStorage
Fehlerjest: { ... }
zu beheben, müssen Sie das Teil Ihrer Datei package.json hinzufügenquelle