web-dev-qa-db-ja.com

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

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

"window"が定義されていません

私はこれ をeslintのドキュメント で見ています。

次のコードでは、windowをテスト対象のルールをトリガーしないコードのグローバル変数として定義しています。

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

Eslintが "window"をグローバル変数として使えるようにするために、package.jsonファイルにこのようなものを追加しようとしましたが、私は間違ったことをしているに違いありません。ドキュメントから、私は別のファイルでこのようなことをする必要があるかもしれないようですが、package.jsonファイルでいくつかの許可されたグローバル変数を定義する方法はありますか?

164
chevin99

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

Package.jsonでは、これは機能します。

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

windowを含む組み込みのenvironment: browserがあります。

例:

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

詳細情報: http://eslint.org/docs/user-guide/configuring.html#specifying-environments

265
Laoujin

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

{
  "globals": {
    "document": true,
    "foo": true,
    "window": true
  }
}
54
Kirk Strobeck

あなたの。eslintrc.jsonは以下のテキストを含むべきです。
このようにESLintはあなたのグローバル変数について知っています。

{
  "env": {
    "browser": true,
    "node": true
  }                                                                      
}
41
Sergey Andreev

私は彼がインラインバージョンを要求していないことを知っていますが、この質問には100,000回近くの訪問があり、私はそれを探してここに落ちました。

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 - ノードとブラウザの両方に共通のグローバル。

[...]

4
Carles Alcolea

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

"env": {
    "browser": true,
    "node": true
},
"rules" : {
    "angular/window-service": 0
 }
2
AndreaM16