升级MongoDB 6前迁移Mongoose 5至6遇语法错误问题
问题根源
报错中的catch {是ES2019的可选catch绑定语法,无需在catch后声明错误参数。该语法要求Node.js版本≥10.13.0才能解析。你的Windows本地Node.js版本满足要求,但Ubuntu服务器通过systemctl启动时使用的Node.js版本过低,不支持该语法,导致启动失败。
解决方案
检查服务器Node.js版本
执行命令确认当前全局Node.js版本:node -v注意:
systemctl可能调用系统全局Node.js,而非你本地用nvm等工具安装的版本,需确认服务使用的Node路径。升级Node.js版本
若版本低于10.13.0,升级到支持ES2019的LTS版本(如14.x、16.x及以上)。以nvm为例:# 安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重载shell配置 source ~/.bashrc # 安装LTS版本并设为默认 nvm install --lts nvm alias default node修正systemd服务配置(若用nvm)
打开你的mfm_form.service配置文件(通常在/etc/systemd/system/目录),修改ExecStart行,指定nvm管理的Node.js绝对路径,示例:ExecStart=/home/ME/.nvm/versions/node/v20.11.0/bin/node /home/ME/Projects/mfm-form/index.js重新加载配置并重启服务:
sudo systemctl daemon-reload sudo systemctl restart mfm_form.service重新安装依赖
清理旧依赖后重新安装,确保适配新Node.js版本:rm -rf node_modules package-lock.json npm install
补充:你尝试的async/await调整无效,是因为问题本质不是Promise用法错误,而是Node.js版本不支持新语法,代码层面的修改无法解决版本兼容问题。
内容的提问来源于stack exchange,提问作者lpgm
相关产品推荐
相关产品推荐

