ESLint - "окно" не определено. Как разрешить глобальные переменные в package.json

Я назначаю свойство глобальному объекту окна, но когда я запускаю eslint, я получаю следующее:

"окно" не определено

Я вижу это здесь, в документах eslint:

следующее определяет окно как глобальную переменную для кода, которая не должна запускать проверяемое правило:

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

Я попытался добавить что-то вроде этого в файл package.json, чтобы eslint разрешил "окно" как глобальную переменную, но я должен делать что-то неправильно. Из документов мне кажется, что мне может понадобиться сделать что-то подобное в отдельном файле, но есть ли способ определить некоторые допустимые глобальные переменные прямо в файле package.json?

Ответ 3

Добавьте .eslintrc в корень проекта.

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

Ответ 4

Ваш .eslintrc.json должен содержать текст ниже.
Таким образом, ESLint узнает о ваших глобальных переменных.

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

Ответ 5

Я знаю, что он не просит встроенную версию. Но так как этот вопрос имеет почти 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 - глобальные переменные, общие как для узла, так и для браузера.

[...]

Помимо окружения, вы можете игнорировать практически все, что хотите. Если он предупреждает вас об использовании console.log(), но, тем не менее, он вам нужен, просто вставьте:

/* eslint-disable no-console */

Вы можете просмотреть список всех правил, включая рекомендуемые правила для лучших практик кодирования.

Ответ 6

Если вы используете Angular, вы можете получить его с помощью:

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