web-dev-qa-db-ja.com

ESLintドル($)は定義されていません。 (no-undef)

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

eSLintをプロジェクトに追加します。

シンボル$を除くすべてが正常です。

エラーが表示されます:[eslint] '$' is not defined. (no-undef)

my .eslintrc.json(注: 追加の規則 同等のjavascriptがある場合にjquery関数を許可しないように設定されています):

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

2つのプラグイン eslint-plugin-dollar-sign とeslint-plugin-jqueryを追加したことがわかります。

なぜこのルールが機能しないのですか?

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

61
spbsmile

あなたが行方不明です

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

$は、jquery環境が有効になっていないとグローバルとして宣言されません。そのため、宣言されていない変数を使用しているというno-undefエラーが発生しています。

132
Ilya Volodin

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

JavaScriptファイル内のコメントを使用して環境を指定できます。次の形式を使用します。

JavaScriptファイルの先頭にコメントとして以下の行を追加します。

    /*eslint-env jquery*/

Eslinterは、jQueryで作業していることがわかるため、「$」で未定義のスローを停止します。

12
Frank Genova

次の行をjsファイルの先頭に追加することもできます。

/* global $ */

「$」に対する警告、または「varName」などの他のグローバルに対する警告を防ぐには:

/* global varName */
8
ariel

.eslintrc.js

追加する

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

https://eslint.org/docs/user-guide/configuring#specifying-globals を参照してください

0
Honghao Zhang