Plaisanterie SecurityError: localStorage n'est pas disponible pour opaque origines
Quand je veux exécuter mon projet avec la commande npm run test
, j'obtiens l'erreur ci-dessous. Quelle en est la cause?
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>)
- Comment voulez-vous accéder à votre demande?.. Je veux dire, Êtes-vous y accéder comme,
http://localhost:port...
? - C'est un problème de test runner, @DavidR, Il a problème avec >>>npm lancer le test<<<
- Ouais je le sais. Je voudrais voir sa réponse afin de vérifier si quelque chose de mauvais dans son
jest
config 🙂 - J'ai juste commencé à courir en moi-même... je ne suis pas en utilisant le stockage local dans le code. Est votre code à l'aide de ts-jest ainsi?
- Veuillez vérifier ma réponse et de poster votre commentaire.
- Pour donner un contexte à cette erreur, j'ai commencé à la voir lors de la tentative de mise à jour de mon
jest
version de^22.3.0
à^23.5.0
avec Babel 7.
Vous devez vous connecter pour publier un commentaire.
Dans le cas où, si vous accédez à votre application avec un
http://localhost
préfixe, vous devez mettre à jour votre plaisanterie de configuration (dans votrejest.config.js
), comme leDans le cas où vous n'avez pas déjà une plaisanterie de configuration, il suffit d'inclure dans la configuration de votre
package.json
. Par exemple:ou dans
jest.config.js
:ou si vous avez
projects
configuré:jest
github page: github.com/facebook/jest/issues/6766jest --testURL=\"http://localhost\"
. Utile si vous ne pouvez pas définir une plaisanterie de configuration parce que d'un autre environnement (réaction de-scripts pour moi).testUrl
travaillé.J'ai juste eu cette recadrage dans un grand monorepo (dans les tests unitaires, qui, autrement, n'auraient pas nécessaire jsdom). La définition explicite de la suite dans notre
jest.config.js
(ou lepackage.json
équivalent) a également atténué la question:Mise à jour: Comme Nicolas mentionnés ci-dessous (merci!), vous pouvez également ajouter les options suivantes si vous ne l'utilisez pas tous les fichiers de configuration:
jest --testEnvironment node
ou son abréviationjest --env=node
, intead.testURL
.Vous devez spécifier quel environnement (
--env
) allez-vous les utiliser.Lorsque vous exécutez
jest
commande dans lepackage.json
vous devez spécifier l'environnement (jsdom
ounode
). Par exemple:Cela devrait fonctionner pour vous!
env
via config ou ligne de commande. Cette seulement a commencé avec la blague de la dernière mise à jour aujourd'hui. Veuillez voir @David R de réponse pour une solution si c'est le cas pour vous.Si vous utilisez jsdom, assurez-vous d'inclure des url.
Caisse jsdom référentiel des options simples. 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
. Par exemple, ce code peut être enregistré dans untestHelper.ts
fichier et appelé à l'aide moka:scripts: { test-setup: 'mocha --compilers ts:ts-node/register,tsx:ts-nocde/register --require testHelper.ts --reporter progress' }
.La suggestion dans le top-rated réponse de l'ajout de
testURL: "http://localhost"
de ma Plaisanterie de config ne fonctionne pas pour moi. Cependant, cette suggestion de la jsdom GitHub discussion, de passer une URL lors de la création de la jsdom objet, ne.Cela peut paraître idiot, mais pour moi, le problème a été causé parce que j'ai eu tort installé aléatoire paquets avec
npm update
. J'étais en train denpm install
et puisnpm update
mais j'aurais seulement courunpm install
. J'ai résolu le problème en supprimantnode_modules
répertoire et en cours d'exécutionnpm install
de nouveau.npm install
correctement en raison de l'entreprise de proxy. Ainsi, le modèle serait inachevéenpm install
ationVous n'avez pas besoin de faire quelque chose tout en travaillant à Réagir JS. C'est le comportement par défaut de l'option de création de réagir-application à la place de la PLAISANTERIE et de la configuration de l'environnement de test.
Sur l'exécution de ci-dessous,il commencer à montrer le test de la réussite ou de l'échec,
Dans le cas où vous voulez la couverture de test, vous devez simplement ajouter ci-dessous pour package.fichier json
}
Cette surgit avec moi lors de l'intégration de
enzyme
avecjest
. Le Github Question De Discussion suggère les mêmes que ci-dessus, à savoir l'ajout deà la plaisanterie config. Toutefois, il est bon de savoir que c'est également déclenchés par l'enzyme. Pour moi, c'était de Réagir v15 et la v15 adaptateur.