在Render部署NodeJS Web Service时遇“SyntaxError: Unexpected token '??='”错误
问题解决思路
这个错误是因为Render上运行的Node.js版本不支持??=(空值合并赋值运算符),该运算符属于ES2020语法,需要Node.js 15.0.0及以上版本(或14.17.0+)才能兼容。本地运行正常是因为你本地的Node版本满足语法要求,而Render默认配置的Node版本可能偏低。
以下是具体解决方法:
指定Render使用的Node.js版本
在项目根目录创建.nvmrc文件,写入你本地开发时用的Node版本(例如v16.18.0);或者在package.json中添加配置:"engines": { "node": ">=16.x" }配置后Render会自动安装指定版本的Node.js,支持该新语法特性。
降级mongodb依赖版本
如果不想调整Node版本,可以降级到未使用??=运算符的mongodb版本,比如^4.10.0(该版本及之前未引入这个语法)。修改package.json里的mongodb版本号后,重新部署项目。清理Render构建缓存
进入Render项目的设置页面,找到"Clear build cache"选项,清除缓存后重新触发构建,避免因缓存导致依赖安装异常。
内容的提问来源于stack exchange,提问作者MrChie
相关产品推荐
相关产品推荐

