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, которые я тестировал. Я также добавил несколько собственных правил для дальнейшего тестирования, но безуспешно.
— John Landon

38
При использовании ESLint напрямую через командную строку все работает правильно, и он находит все ошибки. Проблема здесь, похоже, связана с VS Code, а не с ESLint.
— John Landon

3
попробуйте включить eslint в своих настройках "eslint.enable": true. Убедитесь, что у вас глобально не установлен eslint. и попробуйте удалить путь configFile. Вот как я настроил свой vscode. Я сталкиваюсь с множеством проблем, когда устанавливаю eslint глобально и локально.
— EJ Mason

3
Для меня проблема заключалась в том, что я не установил расширение ESLint в VSCode.
— атулхатри

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, и это тоже сработало для меня.
— Питер Бумсма,

27

Настройка рабочих каталогов решила эту проблему для меня, так как у меня было несколько проектов с .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 устранил проблему!
— Джаред Книпп

3

У меня была аналогичная проблема с окнами, но иногда eslint работал (в vscode) иногда нет. Позже понял, что через некоторое время работает нормально. Это было связано с этой проблемой: сервер eslint становится доступным через ~ 3-5 минут.

Установка переменной окружения NO_UPDATE_NOTIFIER=1решила проблему


3

Я даю ответ, предполагая, что вы уже определили правила в корневом каталоге локального проекта с помощью .eslintrc и .eslintignore . После установки VSCode Eslint Extension несколько конфигураций, которые необходимо сделать в 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

Поскольку вы можете успешно выполнить lint через командную строку, проблема, скорее всего, связана с настройкой плагина ESLint .

Предполагая, что расширение установлено правильно, проверьте все свойства конфигурации, связанные с ESLint, как в проекте (рабочая область), так и в пользовательском (глобальном) файле settings.json.

Есть несколько вещей, которые могут быть неправильно сконфигурированы в вашем конкретном случае; для меня был отключен JavaScript после работы с TypeScript в другом проекте, и мой global 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 validate на: "eslint.validate": ["javascript", "javascriptreact", "html", "typescriptreact"] выполнила свою работу.


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 в домашнем каталоге вашего проекта, используя этот файл, вы можете настроить параметры расширения prettier, мои настройки ниже:

{
  "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 Code.


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.