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

Heroku部署Node.js Discord机器人出现Unexpected token '??='错误如何解决

错误原因

报错中的??=是ES2021新增的逻辑空赋值运算符,仅Node.js 15.0.0及以上版本原生支持。你使用的discord.js v13本身最低要求Node.js 16.6.0,本地16.x版本符合要求可以正常运行,但Heroku未指定Node版本时会默认使用旧的LTS版本,无法识别该语法就会抛出错误。另外你配置了worker类型的Procfile,但日志显示当前启动的是web进程,也会导致进程类型不匹配的后续问题。

修复步骤
  • 在package.json的顶层新增engines字段,指定符合要求的Node.js版本,示例如下:
{
  "name": "discord-bot",
  "version": "1.0.0",
  "engines": {
    "node": "16.x"
  },
  "description": "",
  "main": "src/index.js",
  "scripts": {
    "start": "node .",
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "nodemon src/index.js"
  },
  "dependencies": {
    "cli": "^1.0.1",
    "discord.js": "^13.3.1",
    "discord.js-commando": "^0.12.3"
  },
  "devDependencies": {
    "nodemon": "^2.0.14"
  }
}

如果想要更稳定的兼容性,也可以将node版本指定为16.13.x,匹配16.x的长期支持版本。

  • 调整Heroku的进程启动规则:关闭默认的web进程,启用你配置的worker进程。可以直接通过Heroku CLI执行命令heroku ps:scale web=0 worker=1,也可以登录Heroku控制台,在对应应用的资源标签页手动调整dyno的开关状态。
  • 将修改后的package.json提交到Git仓库,重新推送到Heroku触发构建,构建完成后worker进程就会正常启动。

内容的提问来源于stack exchange,提问作者Matheus Chiarelli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:54:05