[解決済み] ESLintの "no-undef "ルールは、私のUnderscoreの使用を未定義の変数と呼んでいます。
質問
現在開発中のアプリで、GruntをBuild Toolとして、ESLintをlinting Toolとして使用しています。また、私はUnderscore Nodeパッケージを使用しており、私のアプリでそれを使用しています。残念ながら、私のコードでESLintを実行すると、次の行で_が未定義の変数であると判断されます。
return _.pluck(objects, nameColumn);
このようなエラーが表示されます。
78:21 error "_" is not defined no-undef
ESLintのno-undefルールを無効にしたくないので、Underscoreプラグインをインストールしてみましたが、やはりこのエラーが出てしまいます。もし、どなたかこの件で試すべきアイデアをお持ちでしたら、とても感謝しています!
もし、私がこの問題を解決するのを助けるために、さらに何か情報を与えることができるのであれば、私に知らせてください!
どのように解決するのですか?
この 公式ドキュメント を見れば、これを修正する方法がわかるはずです。
宣言されていない変数への参照は、その変数が明示的に
/*global ...*/
のコメントで明示的に言及されているか、あるいはglobals
キーで指定されるか、あるいは設定ファイル .
最も簡単な修正方法は
/* global _ */
をファイルの先頭に追加してください。
あるいは、変数の上書きを禁止するために、その変数が読み取り専用であることを明示的に指定するのがよいでしょう。
/* global _:readonly */
しかし、新しいjsファイルを作成するたびにそれをしなければならないので、煩わしく感じることもあります。もしアンダースコアをよく使うのであれば、私は
にグローバルを追加してください。
.eslintrc
ファイル
に、例えば
{
"globals": {
"_": "readonly"
}
}
そして、これを
.eslintrc
として、プロジェクトのルートか、場合によってはユーザーのホームディレクトリに保存します。後者はお勧めしないという人もいますが、便利な場合もあるので、そこに保存してあることを忘れないようにしてください :)
上記ルールの説明
:
"_": "readonly"
(以前は
"_": false
であったが、現在は非推奨) は、変数名
_
という名前の変数は、eslint にこの変数がグローバルに定義されていることを伝えます。
no-undef
エラーを出さないようにします。sebastianが指摘したように
"readonly"
(または
false
- 非推奨) は、その変数が上書きできないことを意味するので、コードでは
_ = 'something else'
というコードはエラーになります。
no-global-assign
. もし、代わりに
"_": "writable"
(または
"_": true
- deprecated)であれば、値を再割り当てしても、先に述べたようなエラーは発生しないことを意味します。
しかし、これは例で示したようにグローバル変数に直接代入した場合のみ発生することに留意してください。シャドウしても、eslintは何も言いません。例えば、これらのスニペットでは
no-global-assign
:
const _ = 'haha I broke your _'
または関数の引数名として、例えば
function (_) {
console.log(_, 'might not be the _ you were looking for')
}
関連
-
[解決済み] 正規表現で変数を使うには?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] JavaScriptで未定義またはNULL変数をチェックする方法は?
-
[解決済み] 変数 === undefined vs. typeof 変数 === "undefined"
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] $.ajax実行中にローディングイメージを表示する
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?
-
[解決済み] これは純関数ですか?
-
[解決済み] Angular コントローラ内でアンダースコアを使用する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる