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

切换Node至14.17.2时出现Unexpected token '??='错误求助

Node.js 14.17.2 报Unexpected token '??='错误的解决方法

你遇到的错误是因为??=(空值合并赋值操作符)属于ES2021语法特性,而Node.js 14.17.2并未完全支持该特性(Node.js 16.0.0及以上版本才稳定支持??=)。以下是几种可行的解决方式:

  • 手动替换兼容语法
    把代码中所有的??=替换为旧版本支持的写法:
    将变量名 ??= 赋值内容改成变量名 = 变量名 ?? 赋值内容,或者更基础的判断写法:

    if (变量名 == null) {
      变量名 = 赋值内容;
    }
    
  • 用Babel转译代码
    如果项目大量使用新语法,可通过Babel将高版本ES语法转译为Node.js 14支持的代码:

    1. 安装依赖:npm install @babel/core @babel/cli @babel/preset-env --save-dev
    2. 在项目根目录创建.babelrc文件,配置内容:
      {
        "presets": [
          ["@babel/preset-env", {
            "targets": {
              "node": "14"
            }
          }]
        ]
      }
      
    3. 添加转译脚本到package.json:"build": "babel src --out-dir dist"
    4. 运行转译后执行代码:npm run build && node dist/xxx.js
  • 升级Node.js版本
    直接将Node.js升级到16.x及以上版本(推荐LTS版本如16.20.2),这样无需修改代码或转译,就能直接运行使用??=的项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:02:04