You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:45:36