ESLint не працює у VS Code?


88

ESLint не працює для мене у VS Code. У мене встановлений плагін у VS Code, а сам ESLint як залежність розробника в моєму package.json, який я також встановив.

Я змінив наступний параметр у налаштуваннях користувача VS Code:

{
  "eslint.options": { "configFile": "C:/mypath" }
}

Я використовую команду, eslint --initщоб додати базове .eslintrc.jsonдо головного каталогу мого пакету.

Інші люди змогли отримати зворотний зв’язок ESLint із VS Code, використовуючи точно той самий пакет із точно таким самим конфігураційним файлом ESLint.

Я не отримав жодного відгуку, коли безпосередньо порушував кілька правил, які всі були включені до рекомендованого набору правил, який за замовчуванням знаходиться всередині .eslintrc.jsonфайлу.

Чого мені не вистачає?

Редагувати: Я тестував за допомогою ESLint через командний рядок, і все працювало, як очікувалось, з помилками, знайденими там, де вони мали бути, однак ці самі помилки ніколи не відображались у VS Code. Проблема, схоже, стоїть на стороні VS Code, а не ESLint.


2
Зверніть увагу, що якщо ви успішно встановили ESLint , але не отримали зворотного зв’язку від ESLint, як ви очікували, тоді є ймовірність того, що ви, можливо, забули ініціалізувати ESLint . Для цього виконайте цю команду з кореня вашого проекту./node_modules/.bin/eslint --init

Відповіді:


25

Є кілька причин, що ESLint може не надавати вам зворотного зв'язку. ESLint збирається шукати файл конфігурації спочатку у вашому проекті, і якщо він не зможе знайти файл .eslintrc.json, він буде шукати глобальну конфігурацію. Особисто я встановлюю ESLint лише в кожному проекті і створюю конфігурацію на основі кожного проекту.

Друга причина, через яку ви не отримуєте зворотного зв'язку, полягає в тому, що для отримання зворотного зв'язку вам потрібно визначити свої правила підключення в .eslintrc.json. Якщо там немає правил або у вас не встановлені плагіни, вам доведеться їх визначити.


1
Якщо у вас є локальний файл .eslintrc.json, вам не потрібно визначати файл configFile у налаштуваннях.
EJ Mason

3
У мене .eslintrc.jsonлокал вже розміщений у головній папці мого проекту, і мої правила розширюють рекомендовані правила ESLint, які я тестував. Я також додав деякі власні правила для подальшого тестування, але безуспішно.
Джон Лендон,

38
При використанні ESLint безпосередньо через командний рядок все працює належним чином, і він виявляє всі помилки. Здається, проблема тут у VS Code, а не в ESLint.
Джон Лендон,

3
спробуйте ввімкнути eslint у налаштуваннях "eslint.enable": true. Переконайтеся, що у вас не встановлено жодного еслінту в усьому світі. і спробуйте видалити шлях configFile. Ось як я налаштував vscode. Я стикаюся з багатьма проблемами, коли встановлюю eslint глобально та локально.
EJ Mason

3
Для мене проблема полягала в тому, що я не встановив розширення ESLint у VSCode.
atulkhatri

65

Якщо ESLint працює в терміналі, але не всередині VSCode, можливо, це тому, що розширення не може виявити як локальну, так і глобальну node_modulesпапки.

Для перевірки натисніть Ctrl+ Shift+ Uу VSCode, щоб відкрити Outputпанель після відкриття файлу JavaScript із відомою eslintпроблемою. Якщо відображається Failed to load the ESLint library for the document {documentName}.js-або- якщо на Problemsвкладці відображається помилка або попередження, яке посилається eslint, то у VSCode виникає проблема при спробі виявити шлях.

Якщо так, то встановіть його вручну, налаштувавши eslint.nodePathпараметр VSCode ( settings.json). Дайте йому повний шлях (наприклад, подобається "eslint.nodePath": "C:\\Program Files\\nodejs",) - використання змінних середовища наразі не підтримується.
Цей параметр задокументовано на сторінці розширення ESLint .


дякую, витратив кілька годин, розгадуючи, чому eslint зараз глобально працював з vscode
Андрій Войку

Найкраща відповідь.
Михайлович

52

У моєму випадку, оскільки я використовував TypeScript з React, виправлення полягало просто в тому, щоб сказати ESLint також перевірити ці файли. Це потрібно ввести в налаштуваннях користувача:

"eslint.validate": [ "javascript", "javascriptreact", "html", "typescriptreact" ],

3
Працював у мене. (У Windows)
Елліс,

1
TypeScript з React тут теж працював у мене. Дякую
ggat

TypeScript з React в Windows, і це спрацювало і на мене.
Пітер Бумсма

28

Налаштування робочих каталогів вирішило це для мене, оскільки у мене було кілька проектів із власними .eslintrcфайлами, відкритими в одному вікні.

Покладіть це у свій .vscode/settings.json

"eslint.workingDirectories": [
    "./backend", 
    "./frontend"
],

дякую цьому хлопцеві на github: https://github.com/microsoft/vscode-eslint/issues/696#issuecomment-542592372

PS: корисна команда для переліку всіх підкаталогів, що містять .eslintrcмодуль за винятком / node_modules:

find . .eslintrc | grep .eslintrc | grep -v node_modules


7

У моєму випадку я не встановив розширення ESLint у VSCode, що спричиняло проблему. Зробив це, і воно знову запрацювало.



3

Якщо ви використовуєте глобальну установку ESLint, будь-які плагіни, що використовуються у вашій конфігурації, також повинні бути встановлені глобально. Як розумно для локальної установки. якщо ви встановили локально та правильно налаштували локально, але eslint не працює, спробуйте перезапустити IDE. Це просто трапилося зі мною з VScode.


Тьфу! Не знаю, чому мені це не спало на думку раніше. VSCode не розпізнавав псевдоніми модулів, визначені у моєму конфігураційному файлі Webpack, і відображав помилки Eslint, але запуск Eslint з командного рядка ні. Перезапуск VScode вирішив проблему!
Jared Knipp,

3

У мене була подібна проблема на вікнах, проте іноді eslint працював (у vscode), іноді ні. Пізніше я зрозумів, що це добре працює через деякий час. Це було пов’язано з цією проблемою: сервер eslint займає ~ 3-5 хвилин, поки не стане доступним

Встановлення змінної середовища NO_UPDATE_NOTIFIER=1вирішило проблему


3

Я даю відповідь, припускаючи, що ви вже визначили правила у вашому локальному корені проекту за допомогою .eslintrc та .eslintignore . Після встановлення розширення VSCode Eslint кілька конфігурацій, які потрібно виконати в settings.json для vscode

eslint.enable: true
eslint.nodePath: <directory where your extensions available>

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


3

У мене була подібна проблема з eslint, сказавши, що це ".. ще не перевіряє жодні файли", але на консолі проблем VS Code нічого не повідомляється. Однак після оновлення VS Code до останньої версії (1.32.1) та перезапуску, eslint запрацював.


3

У моєму випадку ESLint був відключений у моїй робочій області. Мені довелося його ввімкнути в налаштуваннях розширень vscode.


3

Оскільки ви можете успішно виконувати лінт через командний рядок, проблема, швидше за все, в конфігурації плагіна ESLint .

Припускаючи, що розширення встановлено належним чином, перевірте всі властивості конфігурації, пов'язані з ESLint як у проекті (робоча область), так і у визначеному користувачем (глобально) settings.json.

Є кілька речей, які можуть бути неправильно налаштовані у вашому конкретному випадку; для мене це було відключено JavaScript після роботи з TypeScript в іншому проекті, і мій глобальний settings.json закінчився виглядати наступним чином:

"eslint.validate": [
  { "language": "typescript", "autoFix": true }
 ]

Звідси це було просте виправлення:

"eslint.validate": [
  { "language": "javascript", "autoFix": true },
  { "language": "typescript", "autoFix": true }
]

Це настільки часто, що хтось написав пряме повідомлення в блозі про те, що ESLint не працює у VS Code . Я б просто додав, перевірте ваш глобальний користувацький параметр settings.json перед тим, як замінити конфігурацію локальної робочої області.


Для мене, крім того, що ви вказали, мені довелося додати "javascriptreact"і "typescriptreact"оскільки в моєму проекті використовується React.
oyalhi

Чудовий момент. javascriptі javascriptreactє значеннями за замовчуванням, але я думаю, вам потрібно було б *scriptreactдодати назад для файлів JSX.
dmudro

2

У моєму випадку налаштування eslint перевірити на: "eslint.validate": ["javascript", "javascriptreact", "html", "typecriptreact"], це зробив.


2

Я використовую Use Prettier Formatter та розширення ESLint VS Code разом для підключення та форматування коду.

введіть тут опис зображення

введіть тут опис зображення

тепер встановіть деякі пакети за допомогою заданої команди; якщо потрібно більше пакетів, вони будуть відображатися з командою встановлення як помилку в терміналі для вас, будь ласка, встановіть їх також.

npm i eslint prettier eslint@^5.16.0 eslint-config-prettier eslint-plugin-prettier eslint-config-airbnb eslint-plugin-node eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-react-hooks@^2.5.0 --save-dev

тепер створіть нову назву файлу .prettierrc у домашньому каталозі проекту, за допомогою цього файлу ви можете налаштувати параметри розширення красивішого, мої налаштування нижче:

{
  "singleQuote": true
}

тепер, що стосується ESlint, ви можете налаштувати його відповідно до своїх вимог, я раджу вам зайти на веб-сайт Eslint і ознайомитися з правилами ( https://eslint.org/docs/rules/ )

Тепер створіть ім'я файлу .eslintrc.json у домашньому каталозі проекту, використовуючи цей файл, який ви можете налаштувати eslint, мої конфігурації наведені нижче:

{
  "extends": ["airbnb", "prettier", "plugin:node/recommended"],
  "plugins": ["prettier"],
  "rules": {
    "prettier/prettier": "error",
    "spaced-comment": "off",
    "no-console": "warn",
    "consistent-return": "off",
    "func-names": "off",
    "object-shorthand": "off",
    "no-process-exit": "off",
    "no-param-reassign": "off",
    "no-return-await": "off",
    "no-underscore-dangle": "off",
    "class-methods-use-this": "off",
    "prefer-destructuring": ["error", { "object": true, "array": false }],
    "no-unused-vars": ["error", { "argsIgnorePattern": "req|res|next|val" }]
  }
}

1

У моєму випадку це не спрацювало, оскільки я додав до проекту лише одну папку монорепо, хоча у мене було package.jsonналаштовано і розширення. Я працював лише тоді, коли додав весь проект (який містив package.jsonфайл) до коду VS.


1

Якщо ви розробляєте проект із eslint як залежністю package.json, обов’язково запустіть npm install. Це мені це виправило.


1

Для мене я випадково вимкнув ESLint, коли він показав якесь підказку.

Виконання наведених нижче кроків це виправило для мене

  1. Shift + Command + P і виберіть ESLint: Disabled ESLint
  2. Закрити vscode
  3. Shift + Command + P і виберіть ESLint: Show Output Channel

0

Перейдіть до файлу settings.json, додайте наступне та виправте eslint.nodepath. Пристосуйте його до власних уподобань.

 // PERSONAL
  "editor.codeActionsOnSaveTimeout": 2000,
  "editor.codeActionsOnSave": {
    "source.fixAll": true
  },
  "editor.fontSize": 16,
  "editor.formatOnSave": true,
  "explorer.confirmDragAndDrop": true,
  "editor.tabSize": 2,
  "eslint.codeAction.showDocumentation": {
    "enable": true
  },
  "eslint.nodePath": "C:\\{path}",
  "eslint.workingDirectories": ["./backend", "./frontend"],

0

У моєму випадку у мене був .eslintrc.jsonфайл всередині .vscodeпапки. Після того, як я перемістив його до кореневої папки, ESLint почав працювати коректно.

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