18

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

Parsing Error: Unexpected token =

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

.eslintrc

{
    "parserOptions": {
        "ecmaVersion": 6,
    }
}

这是我的代码:

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

     }

}

有办法解决这个错误吗?这在this特定功能的价值方面存在巨大差异。

4

3 回答 3

30

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

安装

$ npm install eslint babel-eslint --save-dev
# or
$ yarn add eslint babel-eslint -D

注意: babel-eslint 需要babel/core@>=7.2.0一个有效的 Babel 配置文件才能运行。如果你还没有设置,请参阅Babel 使用指南

设置

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

.eslintrc.js

module.exports = {
  parser: "babel-eslint",
};

使用解析器集,您的配置可以按照配置 ESLint文档中的描述进行配置。

于 2017-03-09T17:29:46.197 回答
17

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

注意:babel-eslint 现在是 @babel/eslint-parser 并已移至 Babel monorepo。

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

npm i eslint @babel/eslint-parser --save-dev

然后确保在以下位置配置parser密钥.eslintrc

{
  "parser": "@babel/eslint-parser",
  ...
}

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

{
  "presets": [
    [
      "@babel/env",
      {
        "targets": {
          "node": "12"
        }
      }
    ]
  ]
}
于 2021-02-01T05:49:14.423 回答
0

我有一个非常相似的问题。就目前而言,公认的答案是正确的,并且非常有帮助。但我使用 eslint 配置的 json 版本,而不是 javascript 版本,所以一旦安装了 babel-eslint,使用:

npm i eslint babel-eslint --save-dev

我不得不更改我的 json 配置。现在看起来像这样:

.eslintrc.json

{
  "parserOptions": {
    "es6": true,
    "ecmaVersion": 6,
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "parser": "babel-eslint",
  "rules": {
    "no-unused-vars": 0
  },
  "env": {
    "browser": true,
    "node": true
  }
}
于 2021-01-28T18:07:10.843 回答