ESLint-「ウィンドウ」は定義されていません。package.jsonでグローバル変数を許可する方法


186

プロパティをグローバルウィンドウオブジェクトに割り当てていますが、eslintを実行すると次のようになります。

「ウィンドウ」が定義されていません

私はこれをeslint docsで見ています

次の例では、テストされるルールをトリガーしてはならないコードのグローバル変数としてウィンドウを定義しています。

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

このようなものをpackage.jsonファイルに追加して、eslintにグローバル変数として「ウィンドウ」を許可させましたが、何か間違っているはずです。ドキュメントから、別のファイルでこのようなことをする必要があるかもしれませんが、package.jsonファイルで許可されたグローバル変数を定義する方法はありますか?


ちなみに、nodeを使用していて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-environments

参照してくださいchevin99で答えを以下。package.json


間違いなく最高の答え、ありがとう。私はそのことさえ考えていませんでした:)
Knight Yoshi

4
他の誰かが私のように引っ掛かった場合に備えて:これはそうで.eslintrcはないpackage.json
クレイの瓶

これを1つのファイルにのみ適用する方法はありますか?
AnnanFay

私は、以下の見つけ下記カルレスAlcoleaによって答え:この1ファイルの先頭に追加します/* eslint-env browser */
Laoujin

102

私はこのページでそれを見つけました:http : //eslint.org/docs/user-guide/configuring

package.jsonでは、これは動作します:

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

62
それを行う正しい方法は、 "env":{"browser":true}を使用することです
ニコラス

@Nicolas、うん、おそらく私が最初に見つけたものなら、あなたが提案した方法を使用したでしょうが、この回答は、eslint構成をpackage.jsonに含めることができることを示すのに少なくとも役立ちます。
chevin99

4
次のようにeslintのグローバルをインライン化することもできます。/ * global angular:true * /
Mirko

この質問では、package.jsonファイルの使用方法を具体的に質問します
virtualLast

59

.eslintrcプロジェクトのルートに追加します。

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

eslingConfigをpackage.jsonに配置したのですが(概念的に間違っていることを除いて)うまくいきませんでした。.eslintrc.jsonに追加しても機能します。
ペトルノフ2017年

1
@Petrunov .eslintrc.jsonはちょうどすることができます.eslintrc
カークStrobeck

これは私が経験しているあるケースでは機能しません-私はクロム拡張プロジェクトのためにgulpでeslintを使用しています。グローバルで私は「クローム」を設定しました:trueであり、認識されないグローバルであることを示すエラーをスローします。
Stephen Tetreault 2017年

42

あなたの.eslintrc.jsonは、以下のテキストが含まれている必要があります。
このようにして、ESLintはグローバル変数を認識します。

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

13

私は彼がインラインバージョンを求めていないことを知っています。しかし、この質問は約10万回の訪問であり、私はそれを探してここに落ちたので、次の仲間のコーダーのためにここに残しておきます。

ESLintが--no-inline-configフラグ付きで実行されていないことを確認してください(これがなじみのないものである場合は、おそらく問題ありません)。次に、これをコードファイルに記述します(わかりやすくするために、ファイルの上部に記述しますが、どこでも機能します)。

/* eslint-env browser */

これにより、ESLintに作業環境がブラウザーであることを伝えることができるため、ブラウザーで使用できるものを認識し、それに応じて適応します。

たくさんの環境があり、例えばインラインで複数を同時に宣言することができます:

/* eslint-env browser, node */

ほとんど常に特定の環境を使用している場合は、ESLintの構成ファイルに設定して、それを忘れることをお勧めします。

彼らのドキュメントから:

環境は、事前定義されたグローバル変数を定義します。利用可能な環境は次のとおりです。

  • browser -ブラウザのグローバル変数。
  • node -Node.jsグローバル変数とNode.jsスコープ。
  • commonjs -CommonJSグローバル変数とCommonJSスコーピング(これは、Browserify / WebPackを使用するブラウザーのみのコードに使用します)。
  • shared-node-browser -ノードとブラウザの両方に共通のグローバル。

[...]

環境以外にも、必要なものはすべて無視することができます。それconsole.log()が使用について警告しているが、それについて警告したくない場合は、インラインで:

/* eslint-disable no-console */

コーディングのベストプラクティスに必要な推奨ルールを含む、すべてのルールのリストを確認できます。


2

Angularを使用している場合は、次のようにして取得できます。

"env": {
    "browser": true,
    "node": true
},
"rules" : {
    "angular/window-service": 0
 }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.