ESLint - "विंडो" परिभाषित नहीं है। Package.json में वैश्विक चर की अनुमति कैसे करें


186

मैं एक संपत्ति को वैश्विक विंडो ऑब्जेक्ट में असाइन कर रहा हूं, लेकिन जब मैं एस्लिन चलाता हूं, तो मुझे यह मिलता है:

"विंडो" परिभाषित नहीं है

मैं इसे यहाँ एस्क्लिंट डॉक्स में देखता हूँ :

निम्नलिखित विंडो को कोड के लिए एक वैश्विक चर के रूप में परिभाषित करता है जिसे परीक्षण किए जा रहे नियम को ट्रिगर नहीं करना चाहिए:

valid: [
  {
    code: "window.alert()",
    globals: [ "window" ]
  }
]

मैंने कुछ इस तरह से पैकेज को जोड़ने की कोशिश की है। फ़ाइल को एज़िंट ने "विंडो" को एक वैश्विक चर के रूप में अनुमति दी है, लेकिन मुझे कुछ गलत करना चाहिए। डॉक्स से ऐसा लगता है कि मुझे एक अलग फाइल में ऐसा कुछ करने की आवश्यकता हो सकती है, लेकिन क्या पैकेज में दिए गए कुछ वैश्विक वैरिएबल को परिभाषित करने का एक तरीका है। Json फाइल?


FYI करें, यदि आप नोड का उपयोग कर रहे हैं और ESLint को पहचानना चाहते हैं globalतो आपको यह सुनिश्चित करने की आवश्यकता है कि "node": trueआपके "env"कॉन्फ़िगरेशन के तहत सेट किया गया है।
जोशुआ पिंटर

जवाबों:


308

इसमें एक बिलिन environment: browserशामिल हैwindow

उदाहरण .eslintrc.json:

"env": {
    "browser": true,
    "node": true,
    "jasmine": true
  },

अधिक जानकारी: http://eslint.org/docs/user-guide/configuring.html#specifying-p परिवेश

यह भी देखें chevin99 द्वारा जवाब नीचे।package.json


पूरी तरह से सबसे अच्छा जवाब, धन्यवाद। मैंने ऐसा सोचा भी नहीं था :)
नाइट योशी

4
शायद ज़रुरत पड़े किसी और मेरे जैसे बाहर पकड़ा जाता है: इस में होना चाहिए .eslintrcनहींpackage.json
क्ले का एक जार

क्या इसे बनाने का एक तरीका केवल एक फ़ाइल पर लागू होता है?
अन्नपूर्णे

मुझे नीचे दिए गए Carles Alcolea के उत्तर में निम्नलिखित मिला : इस एक फ़ाइल के शीर्ष पर जोड़ें:/* eslint-env browser */
Laoujin

102

मैंने इसे इस पृष्ठ पर पाया: http://eslint.org/docs/user-guide/configuring

Package.json में, यह काम करता है:

"eslintConfig": {
  "globals": {
    "window": true
  }
}

62
इसका सही तरीका "env": {"ब्राउज़र": true} का उपयोग करना है
निकोलस

@ निकोलस, हाँ, मैंने शायद आपके द्वारा सुझाई गई विधि का उपयोग किया होता, यदि मैंने जो पहले पाया था, लेकिन यह उत्तर कम से कम यह दिखाने में उपयोगी है कि आप पैकेज में अपना एस्किल्ट विन्यास कर सकते हैं।
chevin99

4
यह इस तरह से एस्लिंट के लिए इनलाइन ग्लोबल्स भी संभव है: / * वैश्विक कोणीय: सच * /
मिर्को

प्रश्न विशेष रूप से पूछता है कि कैसे
पैकेज.जॉन

59

.eslintrcप्रोजेक्ट रूट में जोड़ें ।

{
  "globals": {
    "document": true,
    "foo": true,
    "window": true
  }
}

किसी तरह eslingConfig को package.json में रखना मेरे लिए (वैचारिक रूप से गलत होने के अलावा) काम नहीं किया। इसे .eslintrc.json में जोड़ना हालांकि काम करता है।
पेट्रुनोव

1
@Petrunov .eslintrc.jsonबस हो सकता है.eslintrc
कर्क स्ट्रोबेक

यह एक मामले में काम नहीं करता है जिसका मैं अनुभव कर रहा हूं - मैं क्रोम एक्सटेंशन प्रोजेक्ट के लिए गल्प के साथ एस्लिंट का उपयोग कर रहा हूं। ग्लोबल्स में मैंने "क्रोम" सेट किया है: यह सच है और यह अभी भी एक अज्ञात वैश्विक होने के बारे में एक त्रुटि फेंकता है।
स्टीफन टेट्रौल्ट

42

आपके .eslintrc.json में नीचे पाठ होना चाहिए।
इस तरह से ESLint आपके वैश्विक चरों के बारे में जानता है।

{
  "env": {
    "browser": true,
    "node": true
  }                                                                      
}

13

मुझे पता है कि वह इनलाइन संस्करण के लिए नहीं पूछ रहा है । लेकिन जब से इस सवाल का लगभग 100k दौरा किया है और मैं यहाँ खोज रहा हूँ, मैं इसे अगले साथी कोडर के लिए यहाँ छोड़ दूँगा:

सुनिश्चित करें कि ESLint --no-inline-configध्वज के साथ नहीं चलाया गया है (यदि यह परिचित नहीं है, तो आपको जाने की संभावना है)। फिर, इसे अपनी कोड फ़ाइल में लिखें (स्पष्टता और सम्मेलन के लिए, यह फ़ाइल के ऊपर लिखा गया है लेकिन यह कहीं भी काम करेगा):

/* eslint-env browser */

यह ESLint को बताता है कि आपका काम करने का माहौल एक ब्राउज़र है, इसलिए अब यह पता है कि ब्राउज़र में कौन सी चीजें उपलब्ध हैं और उसी के अनुसार एडाप्ट होती हैं।

बहुत सारे वातावरण हैं , और आप एक ही समय में एक से अधिक की घोषणा कर सकते हैं, उदाहरण के लिए, इन-लाइन:

/* eslint-env browser, node */

यदि आप लगभग हमेशा विशेष वातावरण का उपयोग कर रहे हैं, तो इसे अपनी ESLint की कॉन्फ़िगरेशन फ़ाइल में सेट करना और इसके बारे में भूलना सबसे अच्छा है।

से उनके डॉक्स :

एक पर्यावरण वैश्विक चर को परिभाषित करता है जो पूर्वनिर्धारित होते हैं। उपलब्ध वातावरण हैं:

  • browser - ब्राउज़र वैश्विक चर।
  • node - Node.js वैश्विक चर और Node.js स्कूपिंग।
  • commonjs - कॉमन जेएस ग्लोबल वैरिएबल और कॉमनजस स्कूपिंग (ब्राउजर-वेबपैक का उपयोग करने वाले ब्राउज़र-केवल कोड के लिए इसका उपयोग करें)।
  • shared-node-browser - नोड और ब्राउज़र दोनों के लिए ग्लोबल्स आम हैं।

[...]

वातावरण के अलावा, आप इसे अपनी मनचाही चीज को अनदेखा कर सकते हैं। यदि यह आपको उपयोग करने के बारे में चेतावनी देता है, console.log()लेकिन आप इसके बारे में चेतावनी नहीं देना चाहते हैं, तो केवल इनलाइन:

/* eslint-disable no-console */

आप सभी नियमों की सूची देख सकते हैं , जिसमें सर्वोत्तम कोडिंग प्रथाओं के लिए अनुशंसित नियम भी शामिल हैं ।


2

यदि आप कोणीय का उपयोग कर रहे हैं, तो आप इसे बंद कर सकते हैं:

"env": {
    "browser": true,
    "node": true
},
"rules" : {
    "angular/window-service": 0
 }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.