NodeJS v14.17.0中Logical OR assignment (||=)报错如何解决
问题成因
逻辑或赋值运算符||=是ES2021(ES12)才正式纳入ECMAScript标准的语法特性,Node.js对该特性的原生支持最低版本为v15.0.0。你当前使用的v14.17.0属于Node.js 14 LTS版本,内置的V8引擎未兼容该语法,解析代码时无法识别||= token,因此抛出语法错误。
解决方法
你可以根据项目实际情况选择以下任意一种方案:
- 升级Node.js版本
升级到v15.0.0及以上版本即可原生支持||=语法,优先选择v16.x、v18.x或更高的LTS稳定版本,对新特性的兼容性更完善。 - 改写为等价的兼容代码
||=的逻辑是仅当左侧变量为假值时,才将右侧值赋值给左侧变量,完全等价于旧版标准支持的写法,你可以把代码替换为:
该写法在所有Node.js版本都可正常运行,执行逻辑和原写法完全一致。parish.email = parish.email || parishB.EMAIL - 配置Babel转译新语法
如果项目必须固定使用Node.js 14版本,可以引入Babel编译工具,安装@babel/plugin-proposal-logical-assignment-operators转译插件,将新语法自动转换为低版本兼容的代码后再运行。
内容的提问来源于stack exchange,提问作者João Pimentel Ferreira
相关产品推荐
相关产品推荐

