জাস্ট সিকিউরিটি এরর: লোকালস্টোরেজ অস্বচ্ছ উত্সগুলির জন্য উপলভ্য নয়


144

আমি যখন কমান্ডটি দিয়ে আমার প্রকল্পটি চালাতে চাই 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>)

আপনি কীভাবে আপনার অ্যাপ্লিকেশনটি অ্যাক্সেস করবেন? .. মানে, আপনি কি এটির মতো অ্যাক্সেস করছেন http://localhost:port...?
ডেভিড আর

এটি পরীক্ষামূলক রানার, ডেভিডআর-এর সমস্যা, >>> এনপিএম রান টেস্ট <<<
মার্টিন চাওভ

@ মার্টিন চাওভ ইউপ আমি এটি জানি। আমি তার jestকনফিগারেশনে কিছু ভুল আছে কিনা তা পরীক্ষা করে দেখতে তার উত্তর দেখতে চাই :-)
ডেভিড আর

1
আমি নিজেই এটিকে চালানো শুরু করেছি ... আমি কোডে মোটেও স্থানীয়-সঞ্চয়স্থান ব্যবহার করছি না। আপনার কোডটিও টিএস-জাস্ট ব্যবহার করছে?
k2snowman69

@ k2snowman69 আমার উত্তর চেক করুন এবং আপনার মন্তব্য পোস্ট করুন।
ডেভিড আর

উত্তর:


139

সেক্ষেত্রে, আপনি যদি নিজের অ্যাপ্লিকেশনটিকে http://localhostউপসর্গ দিয়ে অ্যাক্সেস করছেন তবে আপনার জাস্ট কনফিগারেশনটি (আপনার মধ্যে jest.config.js) হিসাবে আপডেট করতে হবে ,

  "jest": {
    "verbose": true,
    "testURL": "http://localhost/"
  }

আপনার যদি ইতিমধ্যে কোনও ঠাট্টা কনফিগারেশন না থাকে তবে কেবলমাত্র আপনার কনফিগারেশনটি অন্তর্ভুক্ত করুন package.json। উদাহরণ স্বরূপ:

{
  "name": "...",
  "description": "...",
  ...
  "jest": {
    "verbose": true,
    "testURL": "http://localhost/"
  }
}

বা মধ্যে jest.config.js:

module.exports = {
  verbose: true,
  testURL: "http://localhost/",
  ...
}

বা যদি আপনি projectsকনফিগার করেছেন:

module.exports = {
  verbose: true,

  projects: [{
    runner: 'jest-runner',
    testURL: "http://localhost/",

    // ...
  }]
}

17
হ্যাঁ এটি আমার পক্ষে কাজ করেছে ... যদিও আমার কেন এটি প্রয়োজন এবং কেন এটি সর্বশেষ আপগ্রেডের আগে কাজ করছিল তা আমি পুরোপুরি বুঝতে পারি না
k2snowman69

1
এটি গিথুবjest পৃষ্ঠায় আলোচনা করা হয়েছে : github.com/facebook/jest/issues/6766
জর্ডান

2
এছাড়াও আপনি আপনার npm লিপিতে CLI বিকল্প ব্যবহার করতে পারেন: jest --testURL=\"http://localhost\"। আপনি যদি অন্য পরিবেশের কারণে বিশ্বব্যাপী জাস্ট কনফিগারেশন সেট করতে না পারেন তবে দরকারী (আমার জন্য প্রতিক্রিয়া-স্ক্রিপ্ট)।
বুড়িচ

আমি দেশীয় প্রতিক্রিয়া নিয়ে কাজ করছি। এমনকি আমার জন্য testUrlকাজ।
জিমিত প্যাটেল 7'18

78

আমি কেবল একটি বড় মনোরেপোতে এই ফসল কাটাতে পেরেছি (ইউনিট পরীক্ষায়, অন্যথায় জসডম লাগবে না)। আমাদের jest.config.js(বা package.jsonসমতুল্য) এ স্পষ্টভাবে নিম্নলিখিতটি সেট করাও এই সমস্যাটিকে হ্রাস করেছে:

module.exports = {
  testEnvironment: 'node'
}

আপডেট: নিকোলাস নীচে উল্লিখিত হিসাবে (ধন্যবাদ!), আপনি যদি কোনও কনফিগার ফাইল ব্যবহার না করেন তবে আপনি নীচের পতাকাগুলি যুক্ত করতে পারেন:

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

3
এটি আমার পক্ষে কাজ করেছিল! এই আপনার প্রয়োজন উত্তর! ধন্যবাদ!
ব্লুপ্রিন্টক্রিস

দেখে মনে হয় যে লেখক নোড এনভায়রনমেন্ট করেছেন - তার ক্ষেত্রে তার পরীক্ষা করা উচিত পরিবেশ: "jsdom"। এটি আমার জন্য সর্বশেষ আপডেটের সাথে কাজ করে। আপনার উপদেশের জন্য ধন্যবাদ!
ফিলিপ মুলার

3
নীচে কিছু অন্যান্য উত্তরে উল্লিখিত হিসাবে, আপনি কোনও কনফিগার ফাইল (বা প্যাকেজ.জসন সম্পত্তি) চালিয়ে jest --testEnvironment nodeবা এর শর্টহ্যান্ড jest --env=node, ইন্টাডের মাধ্যমে এড়িয়ে যেতে পারেন ।
নিকোলস ফ্যান্টোন

2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটি ত্রুটির জন্য আরও উপযুক্ত বলে মনে হচ্ছে। এছাড়াও আপনি যদি কেবল স্ক্রিপ্টগুলি পরীক্ষা করে থাকেন তবে এটিকে সংজ্ঞায়িত করার কোনও মানে হয় না testURL
দেজ

16

আপনার অবশ্যই পরিবেশটি নির্দিষ্ট করতে হবে (--env ) ব্যবহার করতে চলেছেন করতে হবে।

আপনি jestকমান্ড চালানোর সময় আপনার package.jsonপরিবেশ ( jsdomবা node) নির্দিষ্ট করা উচিত । উদাহরণ স্বরূপ:

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

এটি আপনার জন্য কাজ করা উচিত!


1
আপনি যদি জসডম ব্যবহার করছেন তবে আপনি envকনফিগারেশন বা কমান্ডলাইনের মাধ্যমে কোনও নির্দিষ্ট করে কিনা তা নির্বিশেষে একই জিনিস ঘটে । এটি আজ জাস্টের সর্বশেষ আপডেটের সাথেই ঘটেছে started যদি আপনার ক্ষেত্রে এটি হয় তবে সমাধানের জন্য @ ডেভিড আর এর উত্তর দেখুন।
fisch2

7

আপনি যদি জসডম ব্যবহার করছেন তবে নিশ্চিত হয়ে নিন যে আপনি ইউআরএল অন্তর্ভুক্ত করেছেন।

জাসদম সংগ্রহস্থলের সহজ বিকল্পগুলি চেকআউট করুন। https://github.com/jsdom/jsdom#simple-options

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

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

আমার ক্ষেত্রে আমার আমি সেই কোডটি আমার জাসডম কনফিগারেশন ফাইলটিতে যুক্ত করেছি। var jsdom = require('jsdom'); var exposedProperties = ['window', 'navigator', 'document']; const { JSDOM } = jsdom; const {document } = (new JSDOM('',{ url: "https://localhost/",})).window; global.document = document;
p8ul

+1 জাস্ট সম্পর্কে সুনির্দিষ্টভাবে না হলেও এটি একটি বিকল্প সমাধান এবং অন্যান্য সেটআপগুলির জন্য এটি ব্যবহার করা যেতে পারে (যেহেতু ত্রুটি কোডের জন্য এটি শীর্ষ এসও, আমার মতো অন্যরাও এই পৃষ্ঠাটি খুঁজে পাবেন যারা জাস্ট ব্যবহার করছেন না) প্রতি @ dspacejs ভাল প্রশ্ন, এটি একটি পৃথক ফাইল হবে যা আপনার টেস্ট কমান্ডের মাধ্যমে ডাকে package.json। উদাহরণস্বরূপ, এই কোডটি কোনও testHelper.tsফাইলে সংরক্ষণ করা যেতে পারে এবং মোচা: ব্যবহার করে কল করা যেতে পারে scripts: { test-setup: 'mocha --compilers ts:ts-node/register,tsx:ts-nocde/register --require testHelper.ts --reporter progress' }
jumbertucci

4

testURL: "http://localhost"আমার জেস্ট কনফিগারেশনে যুক্ত করার শীর্ষ- রেটে দেওয়া উত্তরটি আমার পক্ষে কার্যকর হয়নি। তবে, জাসডম গিটহাব আলোচনা থেকে এই পরামর্শ , জাসডম অবজেক্ট তৈরি করার সময় একটি ইউআরএল পাস করার বিষয়ে।

const url = 'http://localhost';

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


0

এটি নির্বোধ শোনায় তবে আমার জন্য সমস্যাটি হয়েছিল কারণ আমি ভুল করে এলোমেলো প্যাকেজগুলি ইনস্টল করেছিলাম npm update। আমি চলমান ছিল npm installএবং তারপর npm updateকিন্তু আমি শুধুমাত্র দৌড়ে উচিত npm installnode_modulesডিরেক্টরি মুছে ফেলা এবং npm installআবার চালিয়ে সমস্যার সমাধান করেছি ।


এটি আমার সাথে সম্পর্কিত, npm installএন্টারপ্রাইজ প্রক্সিটির কারণে আমি আসলে সঠিকভাবে শেষ করতে পারিনি । সুতরাং, প্যাটার্ন অসমাপ্ত হবে npm installation
জেড Khullah

0

প্রতিক্রিয়া জেএসের সাথে কাজ করার সময় আপনাকে কিছু করার দরকার নেই। এটি জেএসটি স্থাপন এবং পরীক্ষার পরিবেশ স্থাপনের জন্য ক্রিয়েট-রিএ্যাক্ট-অ্যাপের ডিফল্ট আচরণ। নীচে চলার পরে, এটি পরীক্ষার সাফল্য দেখাতে বা ব্যর্থ হয়,

এনপিএম পরীক্ষা

আপনি যদি পরীক্ষা কভারেজ চান তবে আপনাকে কেবল প্যাকেজ.জসন ফাইলের সাথে নীচে যুক্ত করতে হবে

"পরীক্ষা": "প্রতিক্রিয়া-স্ক্রিপ্ট পরীক্ষা - কভারেজ" এখন আপনার "স্ক্রিপ্ট" প্যাকেজ.জসন দেখতে দেখতে,

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

}


0

যখন সংহত enzymeকরার সময় এটি আমার সাথে পপ আপ হয়েছিল jestগিটহাব ইস্যু আলোচনা যেমন উপরে উল্লিখিত একই প্রস্তাব দেওয়া, যথা যোগ

"testURL": "http://localhost/"

ঠাট্টা কনফিগারেশনে। তবে এটি জেনে রাখা ভাল যে এটি এনজাইম দ্বারা ট্রিগারও হয়েছে। আমার জন্য এটি ছিল প্রতিক্রিয়া v15 এবং v15 অ্যাডাপ্টার।


0

আমার একই সমস্যা রয়েছে এবং এটি আমার package.jsonফাইলে রেখে আমার পক্ষে কাজ করেছে:

"jest": {
    "verbose": true,
    "testURL": "http://localhost/"
} 

0

Jest SecurityError: localStorageত্রুটিটি সমাধান করার জন্য আপনার jest: { ... }অংশটি আপনার প্যাকেজ.জসন ফাইলে যুক্ত করতে হবে

{

"name": "...",
"version": "..",
"main": "..",
"description": "...",
...

"jest": { "verbose": true, "testURL": "http://localhost/" },

}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.