ESLint डॉलर ($) परिभाषित नहीं है। (कोई-undef)


107
$("#ID").hide();

मैं अपने प्रोजेक्ट में ESLint जोड़ता हूं।

सब कुछ ठीक है, सिवाय प्रतीक के $

मुझे त्रुटि मिली: [eslint] '$' is not defined. (no-undef)

मेरा .eslintrc.json(ध्यान दें: इसमें अतिरिक्त नियम हैं जब एक समान जावास्क्रिप्ट एक होता है)

{
"env": {
    "browser": true,
    "commonjs": true,
    "es6": true
},
"extends": [
    "eslint:recommended"
],
"parserOptions": {
    "sourceType": "module"
},
"plugins": [
    "dollar-sign",
    "jquery"
],
"rules": {       
    "indent": [
        "error" ,
        "tab"
    ],
    "linebreak-style": [
        "error",
        "windows"
    ],
    "quotes": [
        "error",
        "double"
    ],
    "semi": [
        "error",
        "always"
    ],
    "jquery/no-ajax": 2,
    "jquery/no-animate": 2,
    "jquery/no-attr": 2,
    "jquery/no-bind": 2,
    "jquery/no-class": 2,
    "jquery/no-clone": 2,
    "jquery/no-closest": 2,
    "jquery/no-css": 2,
    "jquery/no-data": 2,
    "jquery/no-deferred": 2,
    "jquery/no-delegate": 2,
    "jquery/no-each": 2,
    "jquery/no-fade": 2,
    "jquery/no-filter": 2,
    "jquery/no-find": 2,
    "jquery/no-global-eval": 2,
    "jquery/no-has": 2,
    "jquery/no-hide": 2,
    "jquery/no-html": 2,
    "jquery/no-in-array": 2,
    "jquery/no-is": 2,
    "jquery/no-map": 2,
    "jquery/no-merge": 2,
    "jquery/no-param": 2,
    "jquery/no-parent": 2,
    "jquery/no-parents": 2,
    "jquery/no-parse-html": 2,
    "jquery/no-prop": 2,
    "jquery/no-proxy": 2,
    "jquery/no-serialize": 2,
    "jquery/no-show": 2,
    "jquery/no-sizzle": 2,
    "jquery/no-slide": 2,
    "jquery/no-text": 2,
    "jquery/no-toggle": 2,
    "jquery/no-trigger": 2,
    "jquery/no-trim": 2,
    "jquery/no-val": 2,
    "jquery/no-wrap": 2,
    "dollar-sign/dollar-sign": [
        2,
        "ignoreProperties"
    ]
}

आप देख सकते हैं कि मैंने दो प्लगइन्स जोड़े हैं: एस्लिन्ट-प्लगइन-डॉलर-साइन और एस्लिंट-प्लगइन-जेक्वेरी।

यह नियम काम क्यों नहीं करता है?

"dollar-sign/dollar-sign": [ 2, "ignoreProperties" ]

जवाबों:


211

आप इससे चूक रहे हैं

"env": {
  "browser": true,
  "commonjs": true,
  "es6": true,
  "jquery": true
},

$jqueryसक्षम किए बिना पर्यावरण के रूप में वैश्विक घोषित नहीं किया गया है । उसके कारण, आपको एक no-undefत्रुटि मिल रही है , यह कहते हुए कि आप चर का उपयोग कर रहे हैं जिसे घोषित नहीं किया गया है।


27

https://eslint.org/docs/user-guide/configuring#specifying-environments

आप अपनी जावास्क्रिप्ट फ़ाइल के अंदर एक टिप्पणी का उपयोग करके वातावरण निर्दिष्ट कर सकते हैं, निम्न प्रारूप का उपयोग कर सकते हैं:

अपनी जावास्क्रिप्ट फ़ाइल की शुरुआत में एक टिप्पणी के रूप में नीचे की रेखा जोड़ें।

    /* eslint-env jquery */

एस्केलेटर '$' पर अपरिभाषित फेंकना बंद कर देगा क्योंकि यह पता चल जाएगा कि आप jQuery के साथ काम कर रहे हैं।


1
बहुत बहुत धन्यवाद। इसने मुझे विन्यास फाइल बदलने से बचाया।
दिव्यांग

धन्यवाद! यह इरादे से बहुत स्पष्ट है/* global $ */
नूह सुषमन

19

आप इस लाइन को अपने js फ़ाइल के शीर्ष पर भी जोड़ सकते हैं:

/* global $ */

"$" पर चेतावनी को रोकने के लिए, या किसी अन्य वैश्विक जैसे "varName" के लिए:

/* global varName */

12

में .eslintrc.js

जोड़ना

{
  "globals": {
    "$": true
  }
}

Https://eslint.org/docs/user-guide/configuring#specifying-globals देखें


1
यह अन्य पुस्तकालयों के लिए अच्छा है, मेरे मामले में यह तीन है। मैंने "globals": { "THREE": true },धन्यवाद जोड़कर शिकायत को ठीक किया !
डेनिविकारियो

1
वेबपैक ग्लोबल्स की तलाश में इस समाधान के लिए पूरे दिन खोजा जाता है, यह सिर्फ मेरी जरूरत है। धन्यवाद!
lharby
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.