JS项目ESLint类属性解析错误:如何修复或禁用单行所有规则?
类属性ESLint解析错误的解决方法
根源修复:让ESLint支持类属性语法
你遇到的Parsing error: Unexpected token =是因为ESLint解析器未正确识别类字段语法,即便已设置ecmaVersion:12,可通过以下方式解决:
方案1:升级ESLint到最新版本
旧版ESLint的默认解析器espree对ES2022类字段的支持可能不完善,执行命令升级:
npm install eslint@latest --save-dev
方案2:改用Babel解析器
若升级后问题仍存在,使用@babel/eslint-parser兼容更多ES语法:
- 安装依赖:
npm install @babel/eslint-parser @babel/core @babel/preset-env --save-dev
- 修改ESLint配置文件:
module.exports = { "env": { "node": true, "es2017": true }, "extends": [ "eslint:recommended", "prettier" ], "parser": "@babel/eslint-parser", // 指定Babel解析器 "parserOptions": { "ecmaVersion": 12, "sourceType": "module", "babelOptions": { "presets": ["@babel/preset-env"] // 配置Babel预设 } }, "rules": { // 保留原有规则配置 "no-unused-vars": [ 2, { "args": "all", "argsIgnorePattern": "_$" } ], "semi": [ "error", "always" ], "no-undef": "error", "indent": [ "error", 2 ], "quotes": [ "error", "double" ], "arrow-parens": [ "error", "always" ], "no-extra-semi": "error", "no-magic-numbers": [ "warn", { ignore: [ -1, 0, 1 ] } ], "eqeqeq": [ "warn", "always" ], "comma-spacing": [ "error", { before: false, after: true } ], "array-bracket-spacing": [ "error", "always" ], "object-curly-spacing": [ "error", "always" ], "no-debugger":"off", "no-multiple-empty-lines": [ "error", { max: 1 } ] }, };
方案3:明确启用类字段特性
在现有配置的parserOptions中添加ecmaFeatures,强制开启类字段支持:
parserOptions: { "ecmaVersion": 12, "sourceType": "module", "ecmaFeatures": { "classFields": true } }
临时 workaround:禁用解析错误
由于这是解析阶段的错误,并非规则违反,普通单行禁用注释无效,只能通过块注释跳过整个代码块的ESLint检查:
/* eslint-disable */ class RateLimit { delay = 2 * 1000; // ...其他代码 } /* eslint-enable */
内容的提问来源于stack exchange,提问作者Lilit Mazmanyan
相关产品推荐
相关产品推荐

