You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node可正常运行的代码为何被ESLint报“Parsing error: Unexpected token =”语法错误?

解决Node.js环境下ESLint检测类属性箭头函数的解析错误问题

我来帮你拆解这个问题的原因和解决方案:

为什么会出现Unexpected token =错误?

你用的ESLint v7.32.0默认解析器是Espree v9.x,而类公共字段语法(也就是doAnotherThing = () => {}这种写法)是ES2022才正式纳入标准的。虽然Node.js v14已经原生支持这个特性,但ESLint v7的默认解析器Espree在当时还没有完全适配ES2022的类字段语法,所以它会把这个=识别为非法语法,抛出解析错误。

为什么装@babel/eslint-parser能解决问题?

这其实是个常见的认知误区——你不需要用Babel转译代码,也可以用它的解析器帮ESLint识别语法。@babel/eslint-parser基于Babel的核心解析器,它对最新JavaScript语法的支持通常比ESLint的默认解析器更快、更全面,哪怕你没有任何Babel配置文件,它也能正确解析类字段这类较新的语法,让ESLint顺利完成检测。这不是ESLint的局限,而是不同工具对语法支持的时间差问题:Node.js先落地了特性支持,而ESLint的默认解析器跟进得稍慢一些。

适合纯Node.js环境的解决方案

你有两个可选方案,都不需要引入React相关工具:

方案1:升级ESLint到v8及以上版本

ESLint v8及之后的版本,默认的Espree解析器已经完全支持ES2022的类字段语法。你只需要执行:

npm install eslint@latest --save-dev

然后保持原有的ESLint配置不变,检测时就不会再报错了。

方案2:不升级ESLint,安装Babel解析器

如果因为项目限制不能升级ESLint,那就安装@babel/eslint-parser和@babel/core作为开发依赖:

npm install @babel/eslint-parser @babel/core --save-dev

接着修改你的ESLint配置文件,指定使用Babel解析器:

{
  "env": {
    "node": true,
    "mocha": true
  },
  "extends": "eslint:recommended",
  "parser": "@babel/eslint-parser",
  "parserOptions": {
    "ecmaVersion": "latest"
  }
}

这里不需要额外创建Babel配置文件,默认配置就足够解析类字段语法了。

补充:为什么不能用常规method(){}写法?

你提到的点完全正确——普通的类方法在传入setTimeout后,调用时会丢失this上下文:setTimeout会把回调作为普通函数执行,此时this指向的是Node.js的globalThis,而不是你的Service实例,自然访问不到this.numbers。所以使用类字段箭头函数是保持this绑定的正确做法。

内容的提问来源于stack exchange,提问作者HappyZombies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 14:22:37