Lorsque je veux exécuter mon projet avec la commande npm run test
, j'obtiens l'erreur ci-dessous. Qu'est-ce qui cause cela?
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
la source
la source
http://localhost:port...
,?jest
config :-)Réponses:
Dans le cas où, si vous accédez à votre application avec un
http://localhost
préfixe, vous devez mettre à jour votre configuration jest (dans votrejest.config.js
) comme,Si vous n'avez pas encore de configuration plaisante, incluez simplement la configuration dans votre fichier
package.json
. Par exemple:ou en
jest.config.js
:ou si vous avez
projects
configuré:la source
jest
page github: github.com/facebook/jest/issues/6766jest --testURL=\"http://localhost\"
. Utile si vous ne pouvez pas définir une configuration de plaisanterie globale à cause d'un autre environnement (react-scripts pour moi).testUrl
travaillé.Je viens de l'avoir dans un grand monorepo (dans les tests unitaires, qui autrement n'auraient pas nécessité jsdom). La définition explicite de ce qui suit dans notre
jest.config.js
(ou l'package.json
équivalent) a également atténué ce problème:Mise à jour: Comme Nicolas l'a mentionné ci-dessous (merci!), Vous pouvez également ajouter les indicateurs suivants si vous n'utilisez aucun fichier de configuration:
la source
jest --testEnvironment node
ou son raccourcijest --env=node
, intead.testURL
.Vous devez spécifier quel environnement (
--env
) que vous allez utiliser.Lorsque vous exécutez la
jest
commande dans le,package.json
vous devez spécifier l'environnement (jsdom
ounode
). Par exemple:Cela devrait fonctionner pour vous!
la source
env
via config ou une ligne de commande. Cela n'a commencé à se produire qu'avec la dernière mise à jour de jest aujourd'hui. S'il vous plaît voir la réponse de @David R pour une solution si c'est le cas pour vous.Si vous utilisez jsdom, assurez-vous d'inclure url.
Découvrez les options simples du référentiel jsdom. https://github.com/jsdom/jsdom#simple-options
la source
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 pourrait être enregistré dans untestHelper.ts
fichier et appelé à l' aide mocha:scripts: { test-setup: 'mocha --compilers ts:ts-node/register,tsx:ts-nocde/register --require testHelper.ts --reporter progress' }
.La suggestion dans la réponse la mieux notée d'ajouter
testURL: "http://localhost"
à ma configuration Jest n'a pas fonctionné pour moi. Cependant, cette suggestion de la discussion jsdom GitHub , consistant à passer une URL lors de la création de l'objet jsdom, l'a fait.la source
pour moi, cela a été résolu en passant à "jest": "^ 24.9.0",
la source
Cela peut sembler idiot, mais pour moi, le problème était dû au fait que j'avais installé par erreur des packages aléatoires avec
npm update
. Je couraisnpm install
et puisnpm update
j'aurais dû seulement courirnpm install
. J'ai résolu le problème en supprimant lenode_modules
répertoire et en exécutant ànpm install
nouveau.la source
npm install
correctement en raison du proxy d'entreprise. Ainsi, le modèle serait inachevénpm install
ationVous n'avez rien à faire lorsque vous travaillez avec React JS. Le comportement par défaut de create-react-app consiste à placer JEST et à configurer l'environnement de test. Lors de l'exécution de ci-dessous, il commence à montrer le succès ou l'échec du test,
Si vous souhaitez une couverture de test, vous devez simplement ajouter ci-dessous au fichier package.json
}
la source
Cela m'est apparu lors de l'intégration
enzyme
avecjest
. La discussion sur la question Github suggère la même chose que celle indiquée ci-dessus, à savoir l'ajoutà la config de plaisanterie. Cependant, il est bon de savoir que cela est également déclenché par l'enzyme. Pour moi, c'était React v15 et l'adaptateur v15.
la source
J'ai le même problème et placer ceci dans mon
package.json
fichier a fonctionné pour moi:la source
Pour résoudre l'
Jest SecurityError: localStorage
erreur, vous devez ajouter lajest: { ... }
pièce à votre fichier package.jsonla source