Долар ESLint ($) не визначений. (ні-undef)


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

я додаю ESLint до свого проекту.

все добре, крім символу $.

я отримую помилку: [eslint] '$' is not defined. (no-undef)

my .eslintrc.json(примітка: у ньому встановлені додаткові правила , що забороняють функції jquery, коли є еквівалентний javascript):

{
"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"
    ]
}

Ви бачите, що я додав два плагіни: eslint-plugin-dollar-sign та eslint-plugin-jquery.

чому це правило не працює?

"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

Ви можете вказати середовища, використовуючи коментар у вашому файлі JavaScript, використовуючи такий формат:

Додайте рядок нижче як коментар на початку вашого файлу JavaScript.

    /* eslint-env jquery */

Еслінтер перестане кидати невизначене на '$', оскільки він буде знати, що ви працюєте з jQuery.


1
Дуже дякую. Це врятувало мене від зміни конфігураційних файлів.
Divyang

Дякую! Це набагато зрозуміліше за намірами, ніж/* 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 },подяку!
danivicario

1
Цілий день шукав це рішення, шукаючи глобальні веб-пакети, це якраз те, що мені потрібно. Спасибі тобі!
lharby

0

додайте ці рядки у верхній частині вашого js-файлу -

/* eslint-env es6 */
/* eslint-disable */ 
//Function expression to select elements 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.