代码之家  ›  专栏  ›  技术社区  ›  jcgh582

eslint错误无法读取null的属性“range”

  •  21
  • jcgh582  · 技术社区  · 7 年前

    我已经有同样的eslint问题好几天了。

    团队中的每个人都有相同的eslintrc&已安装的eslint版本。他们的eslint很好用,我的不行。

    我尝试重新启动我的计算机,删除node\u模块,删除我的用户下的任何内容(在主目录中)。什么都不管用。

    问题:

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

    细节

    版本:

    ./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"
          }
        }
      }
    }
    

    此外,如果我从中删除“parser”:“babel eslint”。eslinrc,问题/错误消失了,但我的eslint不起作用。我正在使用ES6语法。

    更新:

    我的解决方案是用纱线代替npm。暂时解决了这个问题。

    7 回复  |  直到 7 年前
        1
  •  31
  •   Ilyich    5 年前

    这些eslintrc规则为我解决了这个问题:

    rules : {
      "template-curly-spacing" : "off",
      "indent": ["error", 2, {
        "ignoredNodes": ["TemplateLiteral"]
      }]
    }
    
        2
  •  23
  •   SergeyP    4 年前

    巴贝尔埃斯林 已被弃用,取而代之的是 @babel/eslint解析器 . 阅读 here

    以下是从babel eslint升级到@babel/eslint解析器的步骤:

    1. 将babel eslint替换为@babel/eslint解析器:

    npm公司

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

    纱线

    yarn remove babel-eslint babel-eslint-plugin
    yarn add --dev @babel/eslint-parser @babel/eslint-plugin
    
    1. 升级eslintrc。js公司:
    module.exports = {
        ---  parser: "babel-eslint",
        +++  parser: "@babel/eslint-parser"
        plugins: [
            ---   "babel"
            +++   "@babel
        ]
    };
    
        3
  •  10
  •   Brady Dowling    5 年前

    修复的版本 babel-eslint 通过运行以下命令,将其更改为7.2.3或8.0.1:

    npm install --save-dev babel-eslint@7.2.3
    

    或:

    npm install --save-dev babel-eslint@8.0.1
    
        4
  •  10
  •   whoan    5 年前

    @Vasan 特别提到 issue 530, this was the comment 这帮助我解决了这个问题:

    该问题很可能是错误解析的原因。

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

    修理

    import("some_path" + variable) // issue fixed
    
        5
  •  2
  •   Atika Varun P V    3 年前

    我在中只添加了两条规则。eslintrc。js文件,它为我解决了。

    rules : {
        "template-curly-spacing" : "off",
        indent : "off"
      }
    
        6
  •  0
  •   Alexander Swann    3 年前

    扩展上面的@SergeyP的答案。

    值得注意的是,您可能需要设置 requireConfigFile 标记为 false 在您的 parserOptions 如果你像我一样 Parsing error: No Babel config file detected 按照他的指示后出错。

    module.exports = {
      parser: '@babel/eslint',
      parserOptions: {
        requireConfigFile: false,
      },
      // ...snip...
    }
    

    这里有关于这个问题的进一步信息,并在此基础上进行了扩展。 https://github.com/babel/ember-cli-babel/issues/366

        7
  •  -1
  •   Ghasem    4 年前

    对我来说,每个字符串文本都会显示一个警告(例如 some text ${someVariable} )安装这两个软件包解决了我的问题:

    npm i @babel/types @babel/traverse --save-dev