¿ESLint no funciona en VS Code?

88

ESLint no me funciona en VS Code. Tengo el complemento instalado en VS Code y ESLint en sí mismo como una dependencia de desarrollador en mi package.json, que también he instalado.

Modifiqué la siguiente opción en la configuración de usuario del código VS:

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

He usado el comando eslint --initpara agregar lo básico .eslintrc.jsonal directorio principal de mi paquete.

Otras personas pudieron obtener comentarios de ESLint de VS Code utilizando exactamente el mismo paquete con el mismo archivo de configuración de ESLint.

No he recibido comentarios de ningún tipo al romper directamente varias reglas que estaban incluidas en el conjunto de reglas recomendado que se encuentra por defecto dentro del .eslintrc.jsonarchivo.

¿Qué me estoy perdiendo?

Editar: He probado el uso de ESLint a través de la línea de comando, y todo funcionó como se esperaba, con los errores encontrados donde deberían haberlo hecho, sin embargo, estos mismos errores nunca aparecieron en VS Code. El problema parece estar del lado de VS Code y no de ESLint.

John Landon
fuente
2
Tenga en cuenta que, si ha instalado ESLint correctamente, pero no recibió comentarios de ESLint como esperaba, existe la posibilidad de que haya olvidado inicializar ESLint . Para hacer eso, ejecute este comando desde la raíz de su proyecto./node_modules/.bin/eslint --init

Respuestas:

25

Hay algunas razones por las que ESLint puede no proporcionarle comentarios. ESLint buscará primero su archivo de configuración en su proyecto y si no puede encontrar un .eslintrc.json allí, buscará una configuración global. Personalmente, solo instalo ESLint en cada proyecto y creo una configuración basada en cada proyecto.

La segunda razón por la que no recibe comentarios es que, para obtenerlos, debe definir sus reglas de borrado en .eslintrc.json. Si no hay reglas allí, o no tiene complementos instalados, debe definirlos.

EJ Mason
fuente
1
Si tiene un .eslintrc.json local, no necesita definir su configFile en su configuración.
EJ Mason
3
Ya tengo el local .eslintrc.jsonen la carpeta principal de mi proyecto, y mis reglas amplían las reglas recomendadas por ESLint, que son las que estaba probando. También agregué algunas reglas propias para probarlas más, pero sin éxito.
John Landon
38
Cuando se usa ESLint directamente a través de la línea de comandos, todo funciona correctamente y encuentra todos los errores. El problema aquí parece estar en VS Code y no en ESLint.
John Landon
3
intente habilitar eslint en su configuración "eslint.enable": verdadero. Asegúrese de no tener ningún eslint instalado globalmente. e intente eliminar la ruta configFile. Así es como configuré mi vscode. Me encuentro con muchos problemas cuando tengo eslint instalado global y localmente.
EJ Mason
3
Para mí, el problema era que no había instalado la extensión ESLint en VSCode.
atulkhatri
65

Si ESLint se está ejecutando en la terminal pero no dentro de VSCode, probablemente se deba a que la extensión no puede detectar las node_modulescarpetas locales y globales .

Para verificar, presione Ctrl+ Shift+ Uen VSCode para abrir el Outputpanel después de abrir un archivo JavaScript con un eslintproblema conocido . Si muestra Failed to load the ESLint library for the document {documentName}.js-o- si la Problemspestaña muestra un error o una advertencia que hace referencia a eslint, entonces VSCode tiene un problema al intentar detectar la ruta.

Si es así, configúrelo manualmente configurando eslint.nodePathen la configuración de VSCode ( settings.json). Déle la ruta completa (por ejemplo, me gusta "eslint.nodePath": "C:\\Program Files\\nodejs",); actualmente, no se admite el uso de variables de entorno.
Esta opción se ha documentado en la página de extensión de ESLint .

ParaBolt
fuente
gracias, pasé unas horas averiguando por qué eslint ahora funcionaba globalmente con vscode
Andrei Voicu
La mejor respuesta de todas.
Nikola Mihajlović
52

En mi caso, dado que estaba usando TypeScript con React, la solución fue simplemente decirle a ESLint que también validara estos archivos. Esto debe ir en la configuración de usuario:

"eslint.validate": [ "javascript", "javascriptreact", "html", "typescriptreact" ],
Simone
fuente
3
Trabajó para mi. (En Windows)
Ellis
1
TypeScript con React aquí, también funcionó para mí. Gracias
ggat
TypeScript con React en Windows y esto también funcionó para mí.
Peter Boomsma
27

La configuración de directorios de trabajo me solucionó, ya que tenía varios proyectos con .eslintrcarchivos propios abiertos en la misma ventana.

Pon esto en tu .vscode/settings.json

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

gracias a este chico en github: https://github.com/microsoft/vscode-eslint/issues/696#issuecomment-542592372

PD: comando útil para enumerar todos los subdirectorios que contienen un .eslintrcexcept / node_modules:

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

Karl Adler
fuente
7

En mi caso, no había instalado la extensión ESLint en VSCode, lo que estaba causando problemas. Lo hice y empezó a funcionar de nuevo.

atulkhatri
fuente
4

Reiniciar VSCode funcionó para mí.

thedanotto
fuente
3

Si está utilizando una instalación global de ESLint, todos los complementos utilizados en su configuración también deben instalarse globalmente. Lo mismo ocurre con la instalación local. Si ha instalado localmente y configurado correctamente localmente, pero eslint no funciona, intente reiniciar su IDE. Esto me acaba de pasar con VScode.

Onengiye Richard
fuente
¡Uf! No sé por qué no se me ocurrió antes. VSCode no reconocía los alias de módulo definidos en mi archivo de configuración de Webpack y mostraba errores de Eslint, pero la ejecución de Eslint desde la línea de comando no lo hacía. ¡Reiniciar VScode solucionó el problema!
Jared Knipp
3

Tuve un problema similar en Windows, sin embargo, a veces eslint funcionó (en vscode) a veces no. Más tarde me di cuenta de que funciona bien después de un tiempo. Estaba relacionado con este problema: el servidor eslint tarda entre 3 y 5 minutos en estar disponible

La configuración de la variable de entorno NO_UPDATE_NOTIFIER=1resolvió el problema

cimak
fuente
3

Estoy dando la respuesta asumiendo que ya ha definido reglas en la raíz de su proyecto local con .eslintrc y .eslintignore . Después de instalar VSCode Eslint Extension, varias configuraciones que deben realizarse en settings.json para vscode

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

La instalación de eslint local como una dependencia del proyecto es el último ingrediente para que esto funcione. considere no instalar eslint como global, lo que podría entrar en conflicto con su paquete instalado localmente.

LasithaMD
fuente
3

Tuve un problema similar con eslint diciendo que era '... no validando ningún archivo todavía', pero no se informó nada en la consola de problemas de VS Code. Sin embargo, después de actualizar VS Code a la última versión (1.32.1) y reiniciar, eslint comenzó a funcionar.

PRS
fuente
3

En mi caso, ESLint estaba deshabilitado en mi espacio de trabajo. Tuve que habilitarlo en la configuración de extensiones de vscode.

Melchia
fuente
3

Dado que puede lint con éxito a través de la línea de comandos, es muy probable que el problema esté en la configuración del complemento ESLint .

Suponiendo que la extensión esté instalada correctamente, consulte todas las propiedades de configuración relacionadas con ESLint tanto en el proyecto (espacio de trabajo) como en el archivo settings.json definido por el usuario (global).

Hay algunas cosas que podrían estar mal configuradas en su caso particular; para mí, JavaScript estaba deshabilitado después de trabajar con TypeScript en otro proyecto y mi settings.json global terminó pareciendo lo siguiente:

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

Desde aquí fue una solución simple:

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

Esto es tan común que alguien escribió una publicación de blog sencilla sobre ESLint que no funciona en VS Code . Solo agregaría, verifique su configuración de usuario global.json antes de anular la configuración del espacio de trabajo local.

dmudro
fuente
Para mí, además de lo que especificó, tuve que agregar "javascriptreact"y "typescriptreact"dado que mi proyecto usa React.
oyalhi
Gran punto. javascripty javascriptreactson valores predeterminados, pero creo que debería haberlos *scriptreactagregado nuevamente para archivos JSX.
dmudro
2

En mi caso, configurar eslint validate en: "eslint.validate": ["javascript", "javascriptreact", "html", "typescriptreact"], hizo el trabajo.

Tomasz Ostroga
fuente
2

Utilizo Use Prettier Formatter y la extensión ESLint VS Code juntas para el código y el formateo.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ahora instale algunos paquetes usando el comando dado, si se requieren más paquetes, se mostrarán con el comando de instalación como un error en el terminal para usted, por favor instálelos también.

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

ahora cree un nuevo nombre de archivo .prettierrc en el directorio de inicio de su proyecto, usando este archivo puede configurar los ajustes de la extensión más bonita, mis configuraciones están a continuación:

{
  "singleQuote": true
}

ahora en cuanto a ESlint puedes configurarlo de acuerdo a tus requerimientos, te recomiendo que vayas al sitio web de Eslint ver las reglas ( https://eslint.org/docs/rules/ )

Ahora cree un nombre de archivo .eslintrc.json en el directorio de inicio de su proyecto, usando ese archivo puede configurar eslint, mis configuraciones están a continuación:

{
  "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" }]
  }
}
Señor
fuente
1

En mi caso, no funcionó porque había agregado solo una carpeta del monorepo al proyecto, a pesar de que tenía package.jsonconfigurada la extensión y la. Trabajé solo cuando agregué todo el proyecto (que contenía el package.jsonarchivo) al Código VS.

shivangg
fuente
1

Si está desarrollando un proyecto con eslint como dependencia de package.json, asegúrese de ejecutar npm install. Eso me lo arregló.

JBaczuk
fuente
1

Para mí, deshabilité accidentalmente ESLint cuando me mostró algún mensaje.

Hacer los pasos a continuación lo solucionó para mí

  1. Shift + Command + P y seleccione ESLint: Disabled ESLint
  2. Cerrar vscode
  3. Shift + Command + P y seleccione ESLint: Show Output Channel
Abdul Vajid
fuente
0

Vaya a su archivo settings.json, agregue lo siguiente y corrija el eslint.nodepath. Adáptelo a sus propias preferencias.

 // 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"],
DJN
fuente