64

Somehow after updating Babel from 6 to 7 my eslint started giving such a warning in node_modules:

enter image description here

So, from my understanding node_modules folder is not ignored and that is why the issue popped up. So, reading through eslint docs:

https://eslint.org/docs/user-guide/configuring

I tried adding "ignorePatterns": ["node_modules/"], to the .eslintrc file but got an error:

Module build failed: Error: ESLint configuration in /Users/vlasenkona/Desktop/gris-seqr2/ui/.eslintrc is invalid: - Unexpected top-level property "ignorePatterns".

So, I tried creating .eslintignore file and added there just node_modules/ but the warning stayed the same. How could I ignore the node_modules folder? The versions of the packages I am using:

"eslint": "^5.16.0",
"babel-eslint": "^9.0.0",
"eslint-config-airbnb": "^16.1.0",
"eslint-import-resolver-babel-module": "^5.1.2",
"eslint-loader": "1.9.0",
"eslint-plugin-flowtype": "2.39.1",
"eslint-plugin-import": "^2.20.1",
"eslint-plugin-jsx-a11y": "^6.1.0",
"eslint-plugin-react": "^7.10.0",
"eslint-plugin-react-perf": "^2.0.8",

The .eslintrc looks like that:

{
  "extends": [
    "airbnb",
    "plugin:react-perf/recommended"
  ],  
  "parser": "babel-eslint",
  "parserOptions": {
    "ecmaFeatures": {
      "experimentalObjectRestSpread": true
    }   
  },  
  "env": {
    "mocha": true,
    "es6": true,
    "browser": true,
    "node": true,
    "jest": true
  },  
  "settings": {
    "import/resolver": {
      "babel-module": {}
    }   
  },  
  "rules": {
    "semi": [2, "never"],
    "no-shadow": ["error", { "allow": ["error"] }], 
    "arrow-body-style": 0,
    "func-names": 0,
    "function-paren-newline": 0,
    "max-len": 0, //["warn", 80, 2], 
    "no-console": 0,
    "no-multi-str": 0,
    "no-param-reassign": 0,
    "no-plusplus": 0,
    "brace-style": 0,
    "object-curly-newline": 0,
    "padded-blocks": 0,
    "react/jsx-first-prop-new-line": 0,
    "react/jsx-wrap-multilines": 0,
    "react/prefer-stateless-function": 0,
    "react/sort-comp": 0,  // more freedom in arranging class functions
    "import/prefer-default-export": 0,
    "react/forbid-prop-types": 0,
    "no-class-assign": 0,
    "react/jsx-filename-extension": [ 1, { "extensions": [".js", ".jsx"]} ],
    "react/require-default-props": 0,
    "react/require-optimization": 2,
    "react/jsx-max-props-per-line": 0,
    "react/jsx-no-target-blank": 0,
    "spaced-comment": 0,

    "jsx-a11y/iframe-has-title": 0,
    "jsx-a11y/tabindex-no-positive": 0,
    "jsx-a11y/click-events-have-key-events": 0,
    "jsx-a11y/anchor-is-valid": 0
  }
}

Update

I tried adding the following to newly created .eslintignore:

node_modules/*
./node_modules/**
**/node_modules/**

But neither works. Interestingly enough, if I open ./node_modules/draftjs-md-converter/dist/index.js and put at the very beginning and end of the file /*eslint-disable */ the warning still remains, so maybe it is not an eslint problem: just totally misleading warning?..

Nikita Vlasenko
  • 4,004
  • 7
  • 47
  • 87
  • Ignore all node_modules folder with `node_modules/*` in `.eslintignore` – Tomas Vancoillie Feb 12 '20 at 15:50
  • 1
    I tried this too and the error stays the same – Nikita Vlasenko Feb 12 '20 at 16:28
  • Tried also downgrading `eslint` to version `4.19.1` but no luck – Nikita Vlasenko Feb 12 '20 at 16:37
  • I'm having a similar issue... @NikitaVlasenko did you manage to fix it? – Ypsilon Feb 27 '20 at 10:50
  • Nope, I was not. I am really stuck with that, so if you manage to solve it, please, let me know. – Nikita Vlasenko Feb 27 '20 at 17:04
  • My problem was that another folder isn't supposed to be run with eslint, this folder is a build file, and somehow in the .eslintignore, it's named wrong. By running the eslint command with ` > log.txt`, then check the log file, i knew about the folder. After I removed it/ fixed .eslintignore, it's fixed! – phuwin Apr 14 '20 at 10:42
  • Try updating your `eslint` and related packages to latest version. Might help. – Vikram K Jul 27 '20 at 10:52
  • According to docs "ESLint always ignores files in `/node_modules/**` and `/bower_components/**`", so ignoring it explicitly should not be required. It can be some dependency has the config where `node_modules` is added to the list. Try running `eslint -v`, it will tell you which configs are in use, then investigate where path is added. – Ruslan Kabalin Nov 16 '20 at 10:01
  • @NikitaVlasenko any workaround for this in 2021? – Dinesh R Rajput Mar 03 '21 at 05:36
  • Since I could not solve it with any answers posted, ultimately I abandoned updates at all, and just working with outdated babel. Unfortunately thats what it is. – Nikita Vlasenko Mar 03 '21 at 16:04

4 Answers4

15

In my case, ESLint (v7.8.1) was ignoring node_modules directories properly, but not my dist directory. I added this to .eslintignore:

client/dist/

and that resolved the issue.

Josh Hansen
  • 917
  • 1
  • 9
  • 20
3

Edit: I shouldn't have had a second node_modules folder in the first place, it works with using only the main folder now


Ignoring node_modules/ in the .eslintignore file in the root folder worked for me.

node_modules/* did not, it caused "An unhandled exception occurred: Failed to load config "airbnb" to extend from." or similar errors when linting the sub-project.

Our project structure looks like this:

root-project

  • node_modules
  • projects
    • sub-project
      • node_modules
      • package.json
      • .eslintrc.json
      • ...
  • src
  • .eslintignore
  • .eslintrc.json
  • ...
Marlene
  • 31
  • 4
1

I've got the same problem. Solution: Make sure your file ".eslintrc" is in the root directory of your project. Where is package.json, node_modules and other things. Good luck.

  • 4
    For me, `.eslintrc` is already in the folder where these other files are located. Moving it to the root of the large project that I have would be wrong logically. – Nikita Vlasenko Mar 02 '20 at 19:04
1

For me, it was my node version. I was running 14 and eslint server was running on 16. This caused eslint to lint all of my node modules.

If you're using nvm, switch to a newer node:

nvm use 18

You can see the ESLint node server version in your IDE using the ESLint: Show Output Channel command.


joematune
  • 1,087
  • 10
  • 16