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

Node.js使用??空值合并运算符报Unexpected token ?错误如何解决

空值合并运算符??本地SyntaxError报错排查方案

??是空值合并运算符,属于ES2020新增特性,Node.js从14.0.0版本才开始原生支持,出现Unexpected token ?报错的核心原因是运行当前代码的Node.js版本低于14.0.0。你升级全局Node版本后问题仍存在,说明项目实际运行时调用的Node不是你升级后的高版本,可按以下步骤排查:

  • 先确认项目实际运行的Node版本,不要直接在终端执行node -v查看全局版本,在项目的入口文件最顶部加入一行代码console.log('当前运行Node版本:', process.version),启动项目后查看输出的版本号:
    • 如果输出版本确实低于14.0.0,继续往下排查版本不一致的原因
    • 如果输出版本高于等于14.0.0,检查项目是否配置了Babel转译规则、ESLint语法校验规则错误拦截了合法语法
  • 排查Node版本不一致的常见原因:
    • 本地安装了nvm、n等Node版本管理工具,当前终端会话不小心切换到了低版本,或是项目根目录存在.nvmrc、.node-version等版本配置文件,启动终端时自动切换到了低版本
    • 项目使用了volta、pnpm等带内置Node版本管理的工具,给当前项目绑定了低版本Node,全局升级不会影响项目绑定的版本
    • 项目通过nodemon、pm2等工具启动,这些工具关联的Node路径还是旧版本的,全局升级Node后没有更新这些工具的关联配置,可以执行nodemon --exec "node -v"、pm2 info node分别查看对应工具使用的Node版本
  • 修复方案:
    • 版本适配:将项目运行时的Node版本统一升级到14.0.0以上的LTS版本(推荐16.x、18.x),使用nvm的话可以在项目根目录添加.nvmrc文件写入指定版本号,避免后续自动切错版本
    • 兼容低版本:如果不能升级Node版本,给项目安装Babel转译插件@babel/plugin-proposal-nullish-coalescing-operator,配置后会自动将??运算符转译为低版本Node兼容的代码

补充说明:你修改一处??后报错转移到下一处,是因为所有??运算符在低版本Node下都会被识别为非法语法,所有用到该特性的位置都会依次抛出错误,和代码逻辑无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:09:04