Eslint - `Parsing error: unexpected token =` error for assigned fat arrow / property initializer
Eslint - `Parsing error: unexpected token =` error for assigned fat arrow / property initializer
我正在使用箭头函数,它抱怨解析错误:
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
值而言,这会产生巨大差异。
您正在使用 class 字段(a.k.a。属性 初始值设定项)语法,它不是 ECMAScript 2015 (ES6)、ES2016 或 2017 的一部分,因此不受支持通过 ESLint。目前是 Stage 3 proposal. If you want to use it with ESLint, you'll need to use babel-eslint。该页面描述了如何使用它,但要点是:
Installation
$ npm install eslint babel-eslint --save-dev
# or
$ yarn add eslint babel-eslint -D
Note: babel-eslint requires babel/core@>=7.2.0
and a valid Babel configuration file to run. If you do not have this already set up, please see the Babel Usage Guide.
Setup
To use babel-eslint, "babel-eslint"
must be specified as the parser
in your ESLint configuration file (see here for more detailed information).
.eslintrc.js
module.exports = {
parser: "babel-eslint",
};
With the parser set, your configuration can be configured as described in the Configuring ESLint documentation.
我有一个非常相似的问题。就目前而言,接受的答案是正确的,而且非常有帮助。但是我使用的是 json 版本的 eslint 配置,而不是 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
}
}
根据 the GitHub repo:
,2021 年 babel-eslint
似乎已被弃用,取而代之的是 @babel/eslint-parser
NOTE: babel-eslint is now @babel/eslint-parser and has moved into the Babel monorepo.
因此,要更新其他答案的说明,您需要:
npm i eslint @babel/eslint-parser --save-dev
然后确保在 .eslintrc
中配置 parser
键:
{
"parser": "@babel/eslint-parser",
...
}
顺便说一句,由于 OP 没有提到运行时,我在 Node 12 中 运行 所以我不需要 babel 来转换我的代码,但 ESlint 需要 需要 babel 来检查代码(听起来很奇怪,但这是我的理解)。所以我还需要一个基本的 babel 配置,babel.config.json
:
{
"presets": [
[
"@babel/env",
{
"targets": {
"node": "12"
}
}
]
]
}
我正在使用箭头函数,它抱怨解析错误:
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
值而言,这会产生巨大差异。
您正在使用 class 字段(a.k.a。属性 初始值设定项)语法,它不是 ECMAScript 2015 (ES6)、ES2016 或 2017 的一部分,因此不受支持通过 ESLint。目前是 Stage 3 proposal. If you want to use it with ESLint, you'll need to use babel-eslint。该页面描述了如何使用它,但要点是:
Installation
$ npm install eslint babel-eslint --save-dev # or $ yarn add eslint babel-eslint -D
Note: babel-eslint requires
babel/core@>=7.2.0
and a valid Babel configuration file to run. If you do not have this already set up, please see the Babel Usage Guide.Setup
To use babel-eslint,
"babel-eslint"
must be specified as theparser
in your ESLint configuration file (see here for more detailed information)..eslintrc.js
module.exports = { parser: "babel-eslint", };
With the parser set, your configuration can be configured as described in the Configuring ESLint documentation.
我有一个非常相似的问题。就目前而言,接受的答案是正确的,而且非常有帮助。但是我使用的是 json 版本的 eslint 配置,而不是 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
}
}
根据 the GitHub repo:
,2021 年babel-eslint
似乎已被弃用,取而代之的是 @babel/eslint-parser
NOTE: babel-eslint is now @babel/eslint-parser and has moved into the Babel monorepo.
因此,要更新其他答案的说明,您需要:
npm i eslint @babel/eslint-parser --save-dev
然后确保在 .eslintrc
中配置 parser
键:
{
"parser": "@babel/eslint-parser",
...
}
顺便说一句,由于 OP 没有提到运行时,我在 Node 12 中 运行 所以我不需要 babel 来转换我的代码,但 ESlint 需要 需要 babel 来检查代码(听起来很奇怪,但这是我的理解)。所以我还需要一个基本的 babel 配置,babel.config.json
:
{
"presets": [
[
"@babel/env",
{
"targets": {
"node": "12"
}
}
]
]
}