javascript - Jest SecurityError: स्थानीयस्टार अपारदर्शी उत्पत्ति के लिए उपलब्ध नहीं है




node.js npm (6)

React JS के साथ काम करते समय आपको कुछ भी करने की आवश्यकता नहीं है। यह JEST को जगह देने और परीक्षण वातावरण स्थापित करने के लिए create-react-app का डिफ़ॉल्ट व्यवहार है। नीचे चलने पर, यह परीक्षण की सफलता या असफलता दिखाने लगता है,

npm परीक्षण

यदि आप परीक्षण कवरेज चाहते हैं, तो आपको पैकेज.जॉन फ़ाइल में नीचे जोड़ना होगा

"परीक्षण": "प्रतिक्रिया-लिपियों का परीक्षण - खोज" अब पैकेज की आपकी "स्क्रिप्ट" है।

"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --coverage",
"eject": "react-scripts eject"

}

जब मैं कमांड 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>)

आपको यह निर्दिष्ट करना होगा कि आप किस पर्यावरण ( --env ) का उपयोग करने जा रहे हैं।

जब आप package.json में jest कमांड चलाते हैं package.json तो आपको पर्यावरण ( jsdom या node ) निर्दिष्ट करना चाहिए। उदाहरण के लिए:

  "scripts": {
    "jest": "jest --env=node --colors --coverage test",
    "test": "npm run jest"
  },

यह आपके लिए काम करना चाहिए!


मैं सिर्फ एक बड़े monorepo (इकाई परीक्षणों में, कि अन्यथा jsdom की आवश्यकता नहीं होगी) में फसल था। स्पष्ट रूप से हमारे jest.config.js (या package.json jest.config.js समतुल्य) में निम्नलिखित सेटिंग भी जारी करें:

module.exports = {
  testEnvironment: 'node'
}

अद्यतन: जैसा कि निकोलस ने नीचे उल्लेख किया है (धन्यवाद!), आप निम्नलिखित झंडे भी जोड़ सकते हैं यदि आप किसी भी विन्यास फाइल का उपयोग नहीं कर रहे हैं:

jest --testEnvironment node    
# or 
jest --env=node

यदि आप jsdom का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप url को शामिल करते हैं।

चेकआउट jsdom रिपॉजिटरी सरल विकल्प। https://github.com/jsdom/jsdom#simple-options

const jsdom = require("jsdom");
const { JSDOM } = jsdom;

const dom = new JSDOM(`...`, { url: "https://example.org/" });

यह मूर्खतापूर्ण लग सकता है, लेकिन मेरे लिए, समस्या का कारण था क्योंकि मैंने npm update साथ गलती से यादृच्छिक पैकेज स्थापित किए थे। मैं npm install और फिर npm update चला रहा था लेकिन मुझे केवल npm install करना चाहिए था। मैंने node_modules निर्देशिका को हटाकर और फिर से npm install करके समस्या को ठीक किया।


testURL: "http://localhost" को जोड़ने के शीर्ष-रेटेड उत्तर में testURL: "http://localhost" मेरे जेस्ट testURL: "http://localhost" मेरे लिए काम नहीं किया। हालाँकि, jsdom GitHub चर्चा से यह सुझाव , jsdom ऑब्जेक्ट बनाते समय एक URL पास करने से हुआ।

const url = 'http://localhost';

const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', { url });






jestjs