228

ESLint is not working for me in VS Code. I have the plugin installed in VS Code, and ESLint itself as a developer dependency in my package.json, which I have installed as well.

I modified the following option in the VS Code User Settings:

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

I have use the command eslint --init to add the basic .eslintrc.json to the main directory of my package.

Other people were able to get ESLint feedback from VS Code using the exact same package with the exact same ESLint config file.

I have received no feedback of any kind when directly breaking multiple rules that were all included in the recommended rule set that is by default inside of the .eslintrc.json file.

What am I missing?

Edit: I have tested using ESLint via command line, and everything worked as expected, with the errors found where they should have, however, these same errors never showed up in VS Code. The issue seems to be on VS Code's side and not ESLint.

4
  • 12
    Note that, If you have installed ESLint successfully, but got no feedback from ESLint as you expected, then there's a chance that you might have forgotten to initialize ESLint. To do that, run this command from the root of your project ./node_modules/.bin/eslint --init
    – user12200634
    Commented Mar 25, 2020 at 10:58
  • I had already seen in the terminal TypeError: Could not find the rule "canonical/filename-match-exported"., but I'd ignored it. But I now think VSC was aborting there and not bothering to run any more rules. Once I removed /* eslint-disable canonical/filename-match-exported */ from the files that had those comments, VSC started honoring my ESLint rules (even in tsx files).
    – Ryan
    Commented May 26, 2023 at 21:45
  • Run vscode command ESLint: Show Output Channel helped me spotted the problem.
    – Nor.Z
    Commented Oct 12, 2023 at 23:29
  • I updated VSCode and then ESLint started working correctly
    – kato2
    Commented Jul 3 at 15:04

40 Answers 40

149

If ESLint is running in the terminal but not inside VSCode, it is probably because the extension is unable to detect both the local and the global node_modules folders.

To verify, press Ctrl+Shift+U in VSCode to open the Output panel after opening a JavaScript file with a known eslint issue. If it shows Failed to load the ESLint library for the document {documentName}.js -or- if the Problems tab shows an error or a warning that refers to eslint, then VSCode is having a problem trying to detect the path.

If yes, then set it manually by configuring the eslint.nodePath in the VSCode settings (settings.json). Give it the full path (for example, like "eslint.nodePath": "C:\\Program Files\\nodejs") -- using environment variables is currently not supported.
This option has been documented at the ESLint extension page.

5
  • thank you, spent a few hours figuring out why eslint did now work globally with vscode Commented May 26, 2018 at 22:30
  • I had the same issue. This helped me to resolve it but I didn't need to change the settings.json file. I went into the Problems tab and clicked on the light bulb beside the error and on the pop-up window selected allow.
    – bshek
    Commented Dec 9, 2020 at 14:32
  • Honestly I was having the same issue, so restarted + updated VSCode and it just works now.
    – mstephen19
    Commented Jan 11, 2023 at 17:32
  • Thanks a lot! Found my problem - Unknown options: requireConfigFile Commented Jan 21, 2023 at 14:28
  • If you install ESLint locally (not globally), then there is no need to do this. Commented Nov 15, 2023 at 14:43
135

In my case, since I was using TypeScript with React, the fix was simply to tell ESLint to also validate these files. This needs to go in your user settings:

"eslint.validate": [ "javascript", "javascriptreact", "html", "typescriptreact" ],
4
  • 1
    TypeScript with React here, worked for me too. Thanks
    – ggat
    Commented Dec 15, 2019 at 12:52
  • TypeScript with React on Windows and this worked for me as well. Commented Aug 3, 2020 at 11:51
  • 3
    What do you mean by "user settings"? Is this .eslintrc.json or something else?
    – Clonkex
    Commented May 15, 2022 at 8:23
  • 3
    This is your settings.json file. You can open this file via the command palette, on macOS it's Cmd + Shift + P to open it, then search for Preferences: Open Settings (JSON)
    – Simone
    Commented May 15, 2022 at 17:49
73

configuring working directories solved it for me, since I had multiple projects with own .eslintrc files openend in the same window.

Put this in your .vscode/settings.json

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

thanks to this guy on github: https://github.com/microsoft/vscode-eslint/issues/696#issuecomment-542592372

PS: useful command to list all subdirectories containing an .eslintrc except /node_modules:

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

1
  • 2
    NOTE: On Windows 10, .vscode/settings.json in the root of our project were not taking effect, but they WERE for our Ubuntu WSL environments. On Windows 10, the default settings.json was under our %appdata% folder, and when we modified it to have the "editor.codeActionsOnSave ...." lines, it started working. The easiest way to get to the right settings.json is to go to the ESLint plugin settings and scroll to the bottom to find a link to it. So again, on Windows 10 only, it was ignoring the settings.json in our .vscode folder in the root of our project.
    – alfreema
    Commented Aug 12, 2021 at 20:36
61

Case 1/2: First-time plugin installation? approval is necessary

Little "weird" user experience (Hard to notice) - anyway - Since V 2.1.10 -
You must change the "currently block" status bar enter image description here on New/First installation.

ESLint plugin Version 2.1.10 changelog (08/10/2020)

no modal dialog is shown when the ESLint extension tries to load an ESLint library for the first time and an approval is necessary. Instead the ESLint status bar item changes to ESLint status icon indicating that the execution is currently block.

Click on the "ESLINT" status-bar (Right-Bottom corner): enter image description here

Opens this popup:

The ESLint extention will use 'node_modules/eslint' for valitaion, which is installed locally in folder 'server', Do you allow the execution?

enter image description here

Click ==> Allows Everywhere

enter image description here

-or- by commands:

ctrl + Shift + p -- ESLint: Manage Library Execution

enter image description here

Read more here under "Release Notes":

https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint


Case 2/2: The plugin already installed/approve

Open the terminal Ctrl+`

Under output ESLint dropdown, you find useful debugging data (Errors, warnings, info).

enter image description here

For example, missing .eslintrc-.json throw this error: enter image description here

Error: ENOENT: no such file or directory, realpath

Next, check if the plugin enabled: enter image description here

By default there is no need to edit eslint.probe

Last, Since v 2.0.4 - eslint.validate in "normal cases" (react, vue, typescript, js, html, md) not necessary anymore (old legacy setting)**

**Many out-of-date stackoverflow answers (even her) indicate that eslint.probe file should be edited.

eslint.probe = an array for language identifiers for which the ESLint extension should be activated and should try to validate the file. If validation fails for probed languages the extension says silent. Defaults to [javascript, javascriptreact, typescript, typescriptreact, html, vue, markdown].

4
  • 3
    I think this one needs to be pinned - that Allow action was so non-obvious. This fixed it all for me. Commented Apr 7, 2021 at 1:47
  • You should edit your question so that it doesn't rely on images. Users with visual impairments, or users with images blocked, will not be able to make use of the information that's hidden in images. Pictures can sometimes add to an an answer, but should never be the sole source of any information.
    – miken32
    Commented Sep 13, 2022 at 15:30
  • my status-bar does not have a eslint option Commented Jun 13, 2023 at 12:53
  • 1
    Case 2 worked for me! Commented Feb 18 at 17:29
40

There are a few reasons that ESLint may not be giving you feedback. ESLint is going to look for your configuration file first in your project and if it can't find a .eslintrc.json there it will look for a global configuration. Personally, I only install ESLint in each project and create a configuration based off of each project.

The second reason why you aren't getting feedback is that to get the feedback you have to define your linting rules in the .eslintrc.json. If there are no rules there, or you have no plugins installed then you have to define them.

10
  • 1
    If you have a local .eslintrc.json you do not need to define your configFile in your settings.
    – EJ Mason
    Commented Jul 14, 2017 at 2:26
  • 3
    I have the local .eslintrc.json already placed in the main folder of my project, and my rules extends the recommended rules by ESLint, which are the ones I was testing. I have also added some rules of my own to further test, but with no success. Commented Jul 14, 2017 at 3:40
  • 78
    When using ESLint directly via command line, everything works properly, and it finds all errors. The issue here seems to be with VS Code, and not ESLint. Commented Jul 14, 2017 at 3:41
  • 4
    try enabling eslint in your settings "eslint.enable": true. Make sure you don't have any eslint installed globally. and try to remove the configFile path. That is how I have my vscode set up. I run into a lot of problems when I have eslint globally and locally installed.
    – EJ Mason
    Commented Jul 14, 2017 at 3:46
  • 8
    For me, the issue was that I had not installed ESLint extension in VSCode.
    – atulkhatri
    Commented Apr 23, 2019 at 11:47
19

In my case, I had not installed the ESLint extension in VSCode, which was causing issue. Did it and it started working again.

1
  • I had to run npm install and then Ctrl + Shift + p and type/select "ESLint: Restart ESLint Server" Commented May 10, 2023 at 23:29
14

Restarting VSCode worked for me.

11

I resolved the issue by restarting the ESLint Server. You can do this by opening up the Ctrl + P menu. Then you can enter > ESLint: Restart ESLint Server.

1
  • Kudos This worked for me on windows afte running npx eslint --init Commented Jul 7, 2022 at 9:07
10

Since you are able to successfully lint via command line, the issue is most likely in the configuration of the ESLint plugin.

Assuming the extension is properly installed, check out all ESLint related config properties in both project (workspace) and user (global) defined settings.json.

There are a few things that could be misconfigured in your particular case; for me it was JavaScript disabled after working with TypeScript in another project and my global settings.json ended up looking following:

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

From here it was a simple fix:

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

This is so common that someone wrote a straight forward blog post about ESLint not working in VS Code. I'd just add, check your global user settings.json before overriding the local workspace config.

2
  • For me, in addition to what you've specified, I had to add "javascriptreact" and "typescriptreact" since my project uses React.
    – oyalhi
    Commented Dec 13, 2019 at 0:22
  • 1
    Great point. javascript and javascriptreact are default values but I think you would need to have *scriptreact added back for JSX files.
    – dmudro
    Commented Dec 14, 2019 at 8:27
6

If you are using a global installation of ESLint, any plugins used in your configuration must also be installed globally. Like wise for local install. if u have installed locally and properly configured locally, yet eslint isn't working, try restarting your IDE. This just happened to me with VScode.

3
  • Ugh! I don't know why this didn't occur to me sooner. VSCode would not recognize module aliases defined in my Webpack config file and was displaying Eslint errors but running Eslint from the command line did not. Restarting VScode fixed the problem! Commented Sep 13, 2018 at 23:01
  • My problem was that I install eslint per-project (not globally) and I was using Docker, so I forgot to run npm i on my local machine.
    – Jami
    Commented Feb 17, 2022 at 17:19
  • Restarting the VSCode works for me :) Commented Oct 10, 2023 at 8:57
6

In my case setting eslint validate to : "eslint.validate": [ "javascript", "javascriptreact", "html", "typescriptreact" ], did the job.

1
  • 2023 update: This is an old legacy setting and should in normal cases not be necessary anymore. Commented Sep 19, 2023 at 19:54
6

In my case ESLint was disabled in my workspace. I had to enable it in vscode extensions settings.

0
5

In my case, I had to enable the ESLint "Always Show Status" setting in VSCode:

enter image description here

Then linting results started showing up immediately in VSCode.

4

I'm giving the response assuming that you have already defined rules in you local project root with .eslintrc and .eslintignore. After Installing VSCode Eslint Extension several configurations which need to do in settings.json for vscode

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

Installing eslint local as a project dependency is the last ingredient for this to work. consider not to install eslint as global which could conflict with your local installed package.

4

I use Use Prettier Formatter and ESLint VS Code extension together for code linting and formating.

enter image description here

enter image description here

now install some packages using given command, if more packages required they will show with installation command as an error in the terminal for you, please install them also.

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

now create a new file name .prettierrc in your project home directory, using this file you can configure settings of the prettier extension, my settings are below:

{
  "singleQuote": true
}

now as for the ESlint you can configure it according to your requirement, I am advising you to go Eslint website see the rules (https://eslint.org/docs/rules/)

Now create a file name .eslintrc.json in your project home directory, using that file you can configure eslint, my configurations are below:

{
  "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
  • Adding configuration to .prettierrc solved my issue. The problem was not with the eslintrc.json file. Commented Mar 5, 2021 at 9:44
4

For me, i did accidentally disable ESLint when some prompt was shown by it.

Doing below steps fixed it for me

  1. Shift + Command + P and select ESLint: Disabled ESLint
  2. Close vscode
  3. Shift + Command + P and select ESLint: Show Output Channel
4

Tried many of these with no luck. Then I saw the error message about incompatible VS Code version in Output > Eslint.

Updating VS Code fixed the problem

1
  • Rather than adding a new answer, I'll just mention that for me updating VSCode wasn't a possiblity, so downgrading the ESLint extension solves it for me.
    – dwjohnston
    Commented Jun 24 at 3:49
3

I had similar problem on windows, however sometimes eslint worked (in vscode) sometimes not. Later I realized that it works fine after a while. It was related to this issue: eslint server takes ~3-5 minutes until available

Setting enviroment variable NO_UPDATE_NOTIFIER=1 solved the problem

3

I had a similar problem with eslint saying it was '..not validating any files yet', but nothing was reported in the VS Code problems console. However after upgrading VS Code to the latest version (1.32.1) and restarting, eslint started working.

2

If you are developing a project with eslint as an package.json dependency, make sure you run npm install. That fixed it for me.

2

After installing the Eslint npm package and/or VS Code Extension by Dirk baeumer, Create .eslintrc.js configuration file as per your coding conventions.

Then, Enable all ESLint configurations in VSCode settings as follows:

  • Pressing shortcut key Ctrl + or Command + based on your OS OR search "Settings"
  • Type @ext:dbaeumer.vscode-eslint in your Search bar
  • Tick mark the following checkboxes
    • Eslint: Debug
    • Eslint: Enable
    • Eslint: Format Enable
    • Eslint: Lint Task Enable

Happy Linting 🤓

1
  • It's working for us on multiple computers and environments (Windows, Ubuntu WSL 1, Ubuntu WSL 2), and none of those need to be checked. We don't have a "Eslint: Enable" option.
    – alfreema
    Commented Aug 12, 2021 at 20:24
2

The .eslintrc.js file had a typo . More specifically I tried to add a rule in a wrong way . Once I removed the falsey rule everything was working fine immediately .

1

In my case, it wasn't working because I had added only one folder of the monorepo to the project, even though I had the package.json and the extension configured. I worked only when I added the whole project (which contained the package.json file) to the VS Code.

1

Windows user here.

Tried everything, nothing worked. Finally removing the folder with eslint in .vscode/extensions and reinstalling fixed!

C:\Users<user>.vscode\extensions

0
1

For me, the latest version of eslint does not work correctly with Visual Studio code in all my packages, so I had to install an earlier global version:

npm i -g [email protected]

J

1

Simple Solution (not best): Add an empty eslint.options to setting.json; this has worked for me:

"eslint.options": {}
1

What worked for me was:

run this command - npm init @eslint/config

after this, a question will pop up saying: How would you like to use ESLint?

select: To check syntax, find problems, and enforce code style

answer next few questions according to your react project and what kind of styling you like.

This will create a .eslintrc.js file in your root directory and errors should start popping up in your repo.

NOTE: This you need to do in every new repo you create. This is to initialise ESlint in your repo

0

Go to your settings.json file, add the following and, fix the eslint.nodepath. Tailor it to your own preferences.

 // 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

In my case, I had the .eslintrc.json file inside the .vscode folder. Once I moved it out to the root folder, ESLint started working correctly.

0

You can open problem tab to check there is an ESLint permission request or not. If you see it, try to click the lightbulb and fix the issue, it works for me.

problem tab in vscode terminal window

wish you luck!

Not the answer you're looking for? Browse other questions tagged or ask your own question.