Eslint 不允许静态类属性

Luc*_*bre 22 javascript node.js eslint class-fields

我目前正在 Node 12.14.1 上开发 API,并使用 Eslint 来帮助我编写代码。不幸的是,它不允许我设置静态类属性,如下所示:

class AuthManager {
  static PROP = 'value'
}
Run Code Online (Sandbox Code Playgroud)

给出以下错误: Parsing error: Unexpected token =eslint

JS 和 Node.js 已经支持静态类属性。
如何禁用此规则?

我还有以下.eslintrc.json文件:

{
  "env": {
      "es6": true,
      "node": true
  },
  "extends": "eslint:recommended",
  "globals": {
      "Atomics": "readonly",
      "SharedArrayBuffer": "readonly"
  },
  "parserOptions": {
      "ecmaVersion": 2018,
      "sourceType": "module"
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 68

ESLint v8 现在原生支持静态类属性:https://eslint.org/blog/2021/10/eslint-v8.0.0-released

parserOptions ecmaVersion 应设置为 13、2022 或“最新”以启用支持。

将其添加到您的.eslint.(cjs | json | js)

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

  • 以下是您需要在 eslintrc 配置文件中添加的配置(对于 JSON 文件): { "parserOptions": { "ecmaVersion": "latest" } } (4认同)
  • 从 v8 发布开始,这就是“正确”的答案。 (3认同)

gol*_*pot 32

ESLint 及其默认解析器目前不支持类字段语法。您可以通过将配置的解析器更改为babel-eslint.

npm install --save-dev babel-eslint
Run Code Online (Sandbox Code Playgroud)
// eslintrc.json
{
  "parser": "babel-eslint",
  ...
}
Run Code Online (Sandbox Code Playgroud)

Eslint 的默认解析器 Espree 不支持类字段,因为该语法目前处于第 3 阶段,并且决定在 Espree 中仅支持第 4 阶段提案。

  • `babel-eslint` 现在是 `@babel/eslint-parser`。 (13认同)

aer*_*ino 8

截至目前,我必须使用这些配置

.eslintrc.js

module.exports = {
  env: {
    node: true,
    es6: true,
  },
  extends: [
    'airbnb-base',
  ],
  parser: '@babel/eslint-parser',
  parserOptions: {
    babelOptions: {
      configFile: './.babelrc',
    },
    ecmaVersion: 2018, // needed to support spread in objects
  },
  plugins: ['@babel'],
};
Run Code Online (Sandbox Code Playgroud)

.babelrc

{
  "presets": ["@babel/env"],
  "plugins": [
    "@babel/plugin-syntax-class-properties"
  ]
}
Run Code Online (Sandbox Code Playgroud)

为此我必须安装:

npm i -D @babel/preset-env
npm i -D @babel/eslint-parser
npm i -D @babel/eslint-plugin
npm i -D @babel/plugin-syntax-class-properties
Run Code Online (Sandbox Code Playgroud)

请注意,@babel上面的模块是@babel我的package.json.


Dor*_*ian 7

你需要安装@babel/eslint-parser

yarn add --dev @babel/eslint-parser
Run Code Online (Sandbox Code Playgroud)

并在您.eslintrc.yml的示例中使用解析器:

parser: "@babel/eslint-parser"
Run Code Online (Sandbox Code Playgroud)