eslint error cannot read property 'range' of null

24,693

Solution 1

Fix the version of babel-eslint to 7.2.3 or 8.0.1 by running:

npm install --save-dev [email protected]

Or:

npm install --save-dev [email protected]

Solution 2

These .eslintrc rules fixed the problem for me:

rules : {
  "template-curly-spacing" : "off",
  "indent": ["error", 2, {
    "ignoredNodes": ["TemplateLiteral"]
  }]
}

Solution 3

babel-eslint has been deprecated in favor of @babel/eslint-parser. read here

Here are steps to upgrade from babel-eslint to @babel/eslint-parser:

  1. replace babel-eslint with @babel/eslint-parser:

npm

npm uninstall babel-eslint babel-eslint-plugin
npm install --save-dev @babel/eslint-parser @babel/eslint-plugin

Yarn

yarn remove babel-eslint babel-eslint-plugin
yarn add --dev @babel/eslint-parser @babel/eslint-plugin
  1. Upgrade .eslintrc.js:
module.exports = {
    ---  parser: "babel-eslint",
    +++  parser: "@babel/eslint-parser"
    plugins: [
        ---   "babel"
        +++   "@babel
    ]
};

Solution 4

As @Vasan mentioned, specifically, on issue 530, this was the comment that helped me to solve the issue:

Most likely the issue is causing of wrong parsing.

import(`some_path/${variable}`) // issue exists

Fix

import("some_path" + variable) // issue fixed

Solution 5

I added only two rules in .eslintrc.js file and it resolved for me.

rules : {
    "template-curly-spacing" : "off",
    indent : "off"
  }
Share:
24,693

Related videos on Youtube

jcgh582
Author by

jcgh582

Updated on July 09, 2022

Comments

  • jcgh582
    jcgh582 11 months

    I have had the same eslint issue for days now.

    Everyone on the team has the same eslintrc & installed version of eslint. Their eslint works fine, mine does not.

    I have tried restarting my computer, deleting node_modules, deleting anything under my user (in home directory). Nothing works.

    Issue:

    ./node_modules/.bin/eslint *.js* 
                                                                              1 ↵  11504  10:19:47
    Cannot read property 'range' of null
    TypeError: Cannot read property 'range' of null
        at SourceCode.getTokenBefore (/Users/jhill/gitRepo/sponsoroo/node_modules/eslint/lib/token-store/index.js:303:18)
        at checkSpacingBefore (/Users/jhill/gitRepo/sponsoroo/node_modules/eslint/lib/rules/template-curly-spacing.js:52:42)
        at TemplateElement (/Users/jhill/gitRepo/sponsoroo/node_modules/eslint/lib/rules/template-curly-spacing.js:117:17)
        at listeners.(anonymous function).forEach.listener (/Users/jhill/gitRepo/sponsoroo/node_modules/eslint/lib/util/safe-emitter.js:47:58)
        at Array.forEach (<anonymous>)
        at Object.emit (/Users/jhill/gitRepo/sponsoroo/node_modules/eslint/lib/util/safe-emitter.js:47:38)
        at NodeEventGenerator.applySelector (/Users/jhill/gitRepo/sponsoroo/node_modules/eslint/lib/util/node-event-generator.js:251:26)
        at NodeEventGenerator.applySelectors (/Users/jhill/gitRepo/sponsoroo/node_modules/eslint/lib/util/node-event-generator.js:280:22)
        at NodeEventGenerator.enterNode (/Users/jhill/gitRepo/sponsoroo/node_modules/eslint/lib/util/node-event-generator.js:294:14)
        at CodePathAnalyzer.enterNode (/Users/jhill/gitRepo/sponsoroo/node_modules/eslint/lib/code-path-analysis/code-path-analyzer.js:608:23)
    

    Details

    Version:

    ./node_modules/.bin/eslint --version  
    v4.16.0
    

    .eslintrc

    {
      "extends": ["airbnb-base", "plugin:security/recommended"],
      "rules": {
          "import/prefer-default-export": "off",
          "no-console": "off",
          "class-methods-use-this": "off",
          "global-require": "off",
          "consistent-return": "off",
          "import/no-extraneous-dependencies": ["error", {"devDependencies": true}],
          /* JSX */
          "jsx-quotes": [2, "prefer-double"],
          /* React */
          "react/display-name": 1,
          "react/jsx-boolean-value": 1,
          "react/jsx-no-duplicate-props": 1,
          "react/jsx-no-undef": 1,
          "react/jsx-quotes": 0,
          "react/jsx-sort-props": 0,
          "react/jsx-uses-react": 1,
          "react/jsx-uses-vars": 1,
          "react/no-danger": 1,
          "react/no-did-mount-set-state": 1,
          "react/no-did-update-set-state": 1,
          "react/no-multi-comp": 1,
          "react/no-unknown-property": 1,
          "react/prop-types": 1,
          "react/react-in-jsx-scope": 1,
          "react/self-closing-comp": 1,
          "react/sort-comp": 1,
          "react/wrap-multilines": 0,
          /* Security */
          "security/detect-non-literal-fs-filename": 2,
          "security/detect-non-literal-regexp": 2,
          "security/detect-unsafe-regex": 2,
          "security/detect-buffer-noassert": 2,
          "security/detect-child-process": 2,
          "security/detect-disable-mustache-escape": 2,
          "security/detect-eval-with-expression": 2,
          "security/detect-no-csrf-before-method-override": 2,
          "security/detect-non-literal-require": 2,
          "security/detect-object-injection": 2,
          "security/detect-possible-timing-attacks": 1,
          "security/detect-pseudoRandomBytes": 2,
          "no-unsafe-innerhtml/no-unsafe-innerhtml": 2
      },
      "parser": "babel-eslint",
      "plugins": [
        "babel",
        "react",
        "security",
        "no-unsafe-innerhtml"
      ],
      "env": {
        "jest": true,
        "browser": true,
        "es6": true,
        "node": true
      },
      "settings": {
        "import/extensions": {
          "webpack": {
            "config": "./webpack.config.react.js"
          }
        }
      }
    }
    

    Also, if I delete "parser": "babel-eslint" from my .eslinrc, the problem/erorr goes away, but my eslint doesn't work. I am using ES6 syntax.

    UPDATE:

    My solution was to use yarn instead of npm. Has solved the problem for the time being.

    • Vasan
      Vasan over 5 years
      Looks like fixing the version of babel-eslint to 7.2.3 or 8.0.1 is a workaround.
  • aercolino
    aercolino over 3 years
    Nice. Just remember to delete node_modules/.cache before building again
  • aercolino
    aercolino over 3 years
    I didn't use this method because my babel-eslint was already at 10.0.3
  • B. Bohdan
    B. Bohdan over 3 years
    Unfortunately, this approach breaks all extended rules.
  • Jared Tomaszewski
    Jared Tomaszewski about 3 years
    The "indent": ["error", 2, { "ignoredNodes": ["TemplateLiteral"] }] alone fixed it for me. Nice catch! Shouldn't this crash be considered a bug in eslint?
  • Ilyich
    Ilyich about 3 years
    @JaredTomaszewski There are numerous issues in babel-eslint repo regarding this problem.

Related