Node.js部署时Nodemon启动崩溃报Unexpected token '.'错误怎么办
错误触发原因
你遇到的语法报错是因为代码中使用了ES2020 新增的可选链操作符 ?.,而你当前使用的 Node.js v12.22.6 版本原生不支持该特性,解析器识别不了?.语法,就会把第二个.判定为非法字符抛出错误。
解决建议
方案1:升级 Node.js 版本(推荐)
可选链操作符在 Node.js v14.0.0 及以上版本才获得完整原生支持,直接升级 Node.js 到 v14.x 或更高的 LTS 版本即可解决问题:
- 如果你使用 nvm 管理 Node 版本,可以直接执行以下命令安装切换:
nvm install 16.20.2 nvm use 16.20.2
- 升级完成后重新启动 nodemon 即可正常运行。
方案2:修改代码兼容低版本 Node(适合无法升级 Node 的场景)
把代码中所有的?.写法替换为传统的层级判断写法即可:
- 替换
const category = request?.baseUrl?.replace('/v1/', '') || ' ';为:
const category = request && request.baseUrl ? request.baseUrl.replace('/v1/', '') : ' ';
- 替换
const subcategory = phproutes[category]?.find((x) => x.nodeapi === nodeUrl[0]).subcategory || '';为:
const subcategory = phproutes[category] && phproutes[category].find(x => x.nodeapi === nodeUrl[0]) ? phproutes[category].find(x => x.nodeapi === nodeUrl[0]).subcategory : '';
- 替换
const phproute = phproutes[category]?.find((x) => x.nodeapi === nodeUrl[0]).phproutes || '';为:
const phproute = phproutes[category] && phproutes[category].find(x => x.nodeapi === nodeUrl[0]) ? phproutes[category].find(x => x.nodeapi === nodeUrl[0]).phproutes : '';
修改完后保存代码,nodemon 会自动重启,报错就会消失。
内容的提问来源于stack exchange,提问作者PinPiguin
相关产品推荐
相关产品推荐

