Scherz SecurityError: "localStorage" ist nicht verfügbar für die undurchsichtige Herkunft
Wenn ich will, um mein Projekt mit dem Befehl npm run test
, bekomme ich die Fehlermeldung unten. Was ist die Ursache?
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>)
- Wie machen Sie auf Ihre Anwendung zugreifen?.. Ich meine, Sie Sind auf der auf es wie
http://localhost:port...
? - Dies ist ein problem mit test runner, @DavidR, Er hat Problem mit >>>npm test ausführen<<<
- Yup ich weiß, dass. Ich würde gerne sehen, seine Antwort, um zu prüfen, ob etwas falsch in seinem
jest
config 🙂 - Ich fing an zu laufen in diesem mich... ich bin nicht mit der lokalen-Speicher überhaupt in den code. Ist dein code mit dem ts-Scherz, wie gut?
- Überprüfen Sie bitte meine Antwort und posten Sie Ihren Kommentar.
- Zu geben, etwas Kontext zu diesem Fehler, ich begann zu sehen, es beim update meine
jest
version von^22.3.0
zu^23.5.0
zusammen mit Babel 7.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Fall, wenn Sie Zugriff auf die Anwendung mit einer
http://localhost
Präfix, Sie müssen aktualisieren Sie Ihre Scherz-Konfiguration (in Ihremjest.config.js
) als,Falls Sie nicht bereits über alle Scherz-Konfiguration, die Konfiguration in Ihrem
package.json
. Zum Beispiel:oder in
jest.config.js
:oder wenn Sie
projects
konfiguriert:jest
github Seite: github.com/facebook/jest/issues/6766jest --testURL=\"http://localhost\"
. Nützlich, wenn Sie nicht legen Sie eine Globale Scherz-Konfiguration wegen einer anderen Umgebung (reagieren-Skripte für mich).testUrl
gearbeitet.Hatte ich nur diese tauchten in einer großen monorepo (in unit-tests, die sonst nicht erforderlich gewesen, jsdom). Explizit setzen Sie die folgenden in unserem
jest.config.js
(oder diepackage.json
äquivalent) auch abgeschwächt, das Problem:Update: Nicolas, die unten erwähnt (danke!), Sie können auch hinzufügen die folgenden flags, wenn Sie nicht mit irgendwelchen config-Dateien:
jest --testEnvironment node
oder seine Kurzformjest --env=node
, intead.testURL
.Müssen Sie angeben, in welcher Umgebung (
--env
) sind Sie gehen zu verwenden.Beim ausführen
jest
Befehl in derpackage.json
sollten Sie die Umgebung (jsdom
odernode
). Zum Beispiel:Sollte diese Arbeit für Sie!
env
per config oder commandline. Dies nur mal passiert mit Scherz neueste update heute. Bitte siehe @David R s Antwort für eine Lösung wenn dies bei Ihnen der Fall ist.Wenn Sie mit jsdom, stellen Sie sicher, dass Sie die url.
Kasse jsdom repository einfachen Optionen. https://github.com/jsdom/jsdom#simple-options
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, dieser code kann gespeichert werden in einemtestHelper.ts
Datei und rief mit Mokka:scripts: { test-setup: 'mocha --compilers ts:ts-node/register,tsx:ts-nocde/register --require testHelper.ts --reporter progress' }
.Vorschlag in der top-bewerteten Antwort hinzufügen
testURL: "http://localhost"
meinen Scherz config hat bei mir nicht funktioniert. Allerdings diesem Vorschlag von der jsdom GitHub-Diskussion, der übergabe eines URL, der beim erstellen des jsdom Objekt hat.Klingt vielleicht albern, aber für mich, das problem verursacht wurde, da hatte ich irrtümlich installiert zufällige Pakete mit
npm update
. Ich liefnpm install
und dannnpm update
aber ich sollte nur rannpm install
. Habe das problem behoben durch löschennode_modules
Verzeichnis und läuftnpm install
wieder.npm install
richtig durch enterprise-proxy. Also, das Muster wäre nicht abgeschlossenennpm install
ationBrauchen Sie nicht, etwas zu tun, während der Arbeit mit React JS. Es ist das Standardverhalten von create-reagieren-app zu platzieren SCHERZ und einrichten der Testumgebung.
Auf das laufen von unten,es zu starten, zeigt der test Erfolg oder scheitern,
In den Fall, Sie möchten testen Sie die Abdeckung, die Sie einfach brauchen, um hinzuzufügen, unter um-Paket.json-Datei
}
Dieser tauchte bei mir bei der Integration
enzyme
mitjest
. Die Github-Issue-Diskussion schlägt vor, das gleiche wie oben, nämlich das hinzufügenden Scherz config. Allerdings ist es gut zu wissen, dass dies ist, ausgelöst auch durch das Enzym. Für mich war es Reagieren v15 und v15-adapter.