Eslint - "解析错误:意外的令牌=`指定的胖箭头/属性初始化程序的错误

chr*_*lee 5 ecmascript-6 eslint

我正在使用箭头功能,它抱怨解析错误:

Parsing Error: Unexpected token =

但是我的代码是有效的(请告诉我,如果我错了).另外,我已将.eslintrc设置设置为使用es6解析:

.eslintrc

{
    "parserOptions": {
        "ecmaVersion": 6,
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

class foo() {
     // Doesn't like the line below
     // even though it is valid:
     namedFunction = () => {

     }

}
Run Code Online (Sandbox Code Playgroud)

有办法解决这个错误?这在this特定功能的价值方面有很大的不同.

Jor*_*ing 14

您正在使用类字段(也称为属性初始化程序)语法,它不是ECMAScript 2015(ES6)的一部分,也不是ES2016或2017的一部分,因此不受ESLint的支持.这是目前的第3阶段提案.如果你想在ESLint中使用它,你需要使用babel-eslint.该页面描述了如何使用它,但要点是:

安装

$ npm install eslint babel-eslint --save-dev
# or
$ yarn add eslint babel-eslint -D
Run Code Online (Sandbox Code Playgroud)

注意: babel-eslint需要babel/core@>=7.2.0运行有效的Babel配置文件.如果您尚未设置此功能,请参阅" Babel使用指南".

建立

要使用babel-eslint,"babel-eslint"必须parser在ESLint配置文件中指定(有关更多详细信息,请参见此处).

.eslintrc.js

module.exports = {
  parser: "babel-eslint",
};
Run Code Online (Sandbox Code Playgroud)

使用解析器集,可以按照配置ESLint文档中的说明配置配置.


Tom*_*eba 11

根据GitHub 存储库,在 2021 年,它似乎babel-eslint已被弃用,取而代之的是:@babel/eslint-parser

注意:babel-eslint 现在是 @babel/eslint-parser 并且已经进入了 Babel monorepo。

因此,要更新其他答案中的说明,您需要:

npm i eslint @babel/eslint-parser --save-dev
Run Code Online (Sandbox Code Playgroud)

然后确保您配置了parser密钥.eslintrc

{
  "parser": "@babel/eslint-parser",
  ...
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,由于 OP 没有提到运行时,我在 Node 12 中运行,所以我不需要 babel 来转译我的代码,但 ESlint确实需要 babel 来整理代码(听起来很奇怪,但这是我的理解)。所以我还需要一个基本的 babel 配置babel.config.json

{
  "presets": [
    [
      "@babel/env",
      {
        "targets": {
          "node": "12"
        }
      }
    ]
  ]
}
Run Code Online (Sandbox Code Playgroud)