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

Node.js使用??=逻辑空赋值运算符报Unexpected token '??='错误如何解决

报错原因及解决方案

报错原因

??=逻辑空赋值运算符是ES2021(ES12)正式纳入ECMAScript标准的新增语法,Node.js对该语法的最低支持版本为v15.0.0。你当前使用的Node.js版本低于15.0.0,内置的JS引擎无法识别该新语法,因此抛出SyntaxError: Unexpected token '??='错误。
浏览器可正常运行是因为你使用的现代浏览器已经跟进支持了该ES2021特性,浏览器与Node.js的JS引擎迭代节奏、版本支持范围存在差异,因此会出现两端表现不一致的情况。

解决方案

  • 方案1:升级Node.js版本
    直接将Node.js升级到v15.0.0及以上版本即可原生支持该语法,优先选择v18、v20等官方长期维护的LTS(长期支持)版本,无需修改现有代码即可正常运行。
  • 方案2:替换为低版本兼容的等价语法
    无需升级Node.js版本,将??=语法替换为旧版JS兼容的写法即可:
    原代码:
    tasksSorted[0] ??= {};
    
    等价兼容写法:
    // 仅在tasksSorted[0]为null或undefined时赋值空对象
    if (tasksSorted[0] === null || tasksSorted[0] === undefined) {
      tasksSorted[0] = {};
    }
    
  • 方案3:通过Babel转译新语法
    若项目需要兼容低版本Node.js且不想修改业务代码,可在项目中引入Babel并配置逻辑赋值运算符的转译插件,构建时自动将新语法转译为当前Node版本可识别的旧语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:42:02