Cuando quiero ejecutar mi proyecto con el comando npm run test , aparece el siguiente error. ¿Qué está causando esto?
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>)En caso de que acceda a su aplicación con un prefijo http://localhost , debe actualizar su configuración de jest (en su jest.config.js ) como,
"jest": { "verbose": true, "testURL": "http://localhost/" } En caso de que aún no tenga ninguna configuración de jest, simplemente incluya la configuración en su package.json . Por ejemplo:
{ "name": "...", "description": "...", ... "jest": { "verbose": true, "testURL": "http://localhost/" } } o en jest.config.js :
module.exports = { verbose: true, testURL: "http://localhost/", ... } o si tienes projects configurados:
module.exports = { verbose: true, projects: [{ runner: 'jest-runner', testURL: "http://localhost/", // ... }] }Acabo de tener esto apareciendo en un gran monorepo (en pruebas unitarias, que de otro modo no habría requerido jsdom). Establecer explícitamente lo siguiente en nuestro jest.config.js (o el equivalente de package.json ) también solucionó ese problema:
module.exports = { testEnvironment: 'node' }Actualización: como Nicolás mencionó a continuación (¡gracias!), También puede agregar las siguientes banderas si no está utilizando ningún archivo de configuración:
jest --testEnvironment node # or jest --env=nodeDebe especificar qué entorno ( --env ) va a utilizar.
Cuando ejecuta el comando jest en el package.json , debe especificar el entorno ( jsdom o node ). Por ejemplo:
"scripts": { "jest": "jest --env=node --colors --coverage test", "test": "npm run jest" },¡Esto debería funcionar para ti!