切换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支持的代码:- 安装依赖:
npm install @babel/core @babel/cli @babel/preset-env --save-dev - 在项目根目录创建
.babelrc文件,配置内容:{ "presets": [ ["@babel/preset-env", { "targets": { "node": "14" } }] ] } - 添加转译脚本到
package.json:"build": "babel src --out-dir dist" - 运行转译后执行代码:
npm run build && node dist/xxx.js
- 安装依赖:
升级Node.js版本
直接将Node.js升级到16.x及以上版本(推荐LTS版本如16.20.2),这样无需修改代码或转译,就能直接运行使用??=的项目。
内容的提问来源于stack exchange,提问作者Narayana Rao
相关产品推荐
相关产品推荐

