ESLint - "вікно" не визначено. Як дозволити глобальні змінні в package.json


187

Я призначаю властивість об'єкту глобального вікна, але коли я запускаю eslint, я отримую це:

"вікно" не визначено

Я бачу це тут у документах eslint :

нижче визначає вікно як глобальну змінну для коду, який не повинен викликати тестування правила:

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

Я намагався додати щось подібне до файлу package.json, щоб мати eslint дозволяє "вікно" як глобальну змінну, але я повинен робити щось не так. З документів здається, що мені може знадобитися зробити щось подібне в окремому файлі, але чи є спосіб визначити деякі дозволені глобальні змінні прямо у файлі package.json?


FYI, якщо ви використовуєте вузол і хочете розпізнати ESLint, globalтоді вам потрібно переконатися, що "node": trueвін встановлений у вашій "env"конфігурації.
Джошуа Пінтер

Відповіді:


309

Є вбудований, environment: browserякий включає window.

Приклад .eslintrc.json:

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

Більше інформації: http://eslint.org/docs/user-guide/configuring.html#specifying-environments

Дивіться також в package.jsonвідповідь на chevin99 нижче.


Абсолютно найкраща відповідь, дякую. Я навіть не думав про це :)
Лицар Йоші

4
Про всяк випадок, коли хтось схопиться як я: Це повинно бути .eslintrc неpackage.json
A Jar of Clay

Чи є спосіб зробити так, щоб це стосувалося лише одного файлу?
AnnanFay

Я знайшов таке в відповіді Карлеса Алколії нижче : Додати вгорі цього файлу:/* eslint-env browser */
Laoujin

102

Я знайшов це на цій сторінці: http://eslint.org/docs/user-guide/configuring

У package.json це працює:

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

63
правильний спосіб зробити це - використовувати "env": {"browser": true}
Nicolas

@Nicolas, так, я, мабуть, використовував би запропонований вами метод, якщо це я знайшов спочатку, але ця відповідь принаймні корисна для того, щоб показати, що ви можете мати свій конфігурацію eslint в пакет.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 працює.
Петрунов

1
@Petrunov .eslintrc.jsonможе бути просто.eslintrc
Кірк Стробек

це не працює в одному випадку, який я відчуваю - я використовую eslint з глоткою для проекту розширення хрому. у глобальних закладах я встановлюю "chrome": істина, і вона все ще кидає помилку, оскільки вона є нерозпізнаною глобальною.
Стівен Тетро

42

Ваш .eslintrc.json повинен містити текст нижче.
Таким чином ESLint знає про ваші глобальні змінні.

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

14

Я усвідомлюю, що він не просить вбудувати версію. Але оскільки це питання має майже 100 тис. Відвідувань, і я потрапив сюди, шукаючи це, я залишу його для наступного кодера:

Переконайтеся, що 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
 }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.