NodeJS运行报SyntaxError: Unexpected token .错误如何修复?
报错原因
你遇到的是语法不兼容错误,代码中使用的?.是ES2020标准推出的可选链操作符,该语法仅在Node.js v14.0.0及更高版本中被原生支持。你当前运行项目的Node版本低于14,无法识别该语法,因此抛出Unexpected token .的语法错误。
修复方案
- 方案1:升级Node.js版本(最推荐)
直接将本地Node版本升级到v14.0.0及以上即可原生支持可选链语法,无需修改任何业务代码。推荐使用nvm管理多版本Node避免环境冲突,执行nvm install 16安装Node16长期支持版,切换版本后重新启动项目即可。 - 方案2:手动替换可选链语法
若暂时无法升级Node版本,可以把代码中的可选链写法替换为传统的层级校验逻辑,原判断语句:
替换为:if(data.result && data.result.body && data.result.body?.aggregations["2"]?.buckets.length > 0)
项目中所有用到if(data.result && data.result.body && data.result.body.aggregations && data.result.body.aggregations["2"] && data.result.body.aggregations["2"].buckets && data.result.body.aggregations["2"].buckets.length > 0)?.的位置都按该规则替换即可正常运行。 - 方案3:配置Babel转译新语法
若不想修改代码也不想升级Node版本,可以在项目中引入Babel,配置对应转译规则将ES2020+的新语法转译为当前Node版本可识别的语法后再运行项目。
内容的提问来源于stack exchange,提问作者AndreaNobili
相关产品推荐
相关产品推荐

