Когда я хочу запустить свой проект с помощью команды npm run test
, я получаю сообщение об ошибке ниже. Чем это вызвано?
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
источник
источник
http://localhost:port...
,?jest
конфигурации :-)Ответы:
В случае, если вы обращаетесь к своему приложению с
http://localhost
префиксом, вам необходимо обновить свою конфигурацию Jest (в вашемjest.config.js
) как,Если у вас еще нет конфигурации jest, просто включите ее в свой
package.json
. Например:или в
jest.config.js
:или если вы
projects
настроили:источник
jest
странице github: github.com/facebook/jest/issues/6766jest --testURL=\"http://localhost\"
. Полезно, если вы не можете установить глобальную конфигурацию Jest из-за другой среды (для меня реагируют на скрипты).testUrl
сработало.Я только что получил это в большом monorepo (в модульных тестах, которые иначе не потребовали бы jsdom). Явная установка следующего в нашем
jest.config.js
(илиpackage.json
эквивалентном) также облегчает эту проблему:Обновление: как Николя упомянул ниже (спасибо!), Вы также можете добавить следующие флаги, если вы не используете какие-либо конфигурационные файлы:
источник
jest --testEnvironment node
его или его сокращениеjest --env=node
, intead.testURL
.Вы должны указать, в какой среде (
--env
) вы собираетесь использовать.Когда вы запускаете
jest
команду в,package.json
вы должны указать среду (jsdom
илиnode
). Например:Это должно работать для вас!
источник
env
через config или командную строку . Это только начало происходить с последним обновлением шутки сегодня. Пожалуйста, смотрите ответ @David R для решения, если это так.Если вы используете JSDOM, убедитесь, что вы включили URL.
Оформить заказ JSDOM-репозитория несложными опциями. 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
. Например, этот код может быть сохранен вtestHelper.ts
файле и вызывается с помощью мокко:scripts: { test-setup: 'mocha --compilers ts:ts-node/register,tsx:ts-nocde/register --require testHelper.ts --reporter progress' }
.Предложение в ответе о добавлении
testURL: "http://localhost"
в мой Jest config не сработало. Тем не менее, это предложение из обсуждения jsdom GitHub о передаче URL при создании объекта jsdom, сделало.источник
для меня это было решено обновлением до "шутка": "^ 24.9.0",
источник
Это может показаться глупым, но для меня проблема была вызвана тем, что я по ошибке установил случайные пакеты с
npm update
. Я бежалnpm install
и тогда,npm update
но я должен был только бежатьnpm install
. Я исправил проблему, удаливnode_modules
каталог иnpm install
снова запустив его.источник
npm install
должным образом из-за корпоративного прокси. Таким образом, картина будет незавершеннойnpm install
AtionВам не нужно ничего делать при работе с React JS. Поведение create-реагировать на приложение по умолчанию для размещения JEST и настройки среды тестирования. При запуске ниже, он начинает показывать успех теста или неудачу,
Если вы хотите тестовое покрытие, вам просто нужно добавить ниже в файл package.json
}
источник
Это всплыло у меня при интеграции
enzyme
сjest
. Github Проблема Обсуждение предполагает такое же , как было отмечено выше, а именно при добавлениив шутку конфиг. Тем не менее, хорошо знать, что это также вызывается ферментом. Для меня это был React v15 и адаптер v15.
источник
У меня та же проблема, и размещение этого в моем
package.json
файле сработало для меня:источник
Чтобы устранить
Jest SecurityError: localStorage
ошибку, вам нужно добавитьjest: { ... }
деталь в ваш файл package.jsonисточник