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

Heroku Node.js14环境运行discord.js出现??=语法错误怎么解决?

报错根因

你遇到的SyntaxError: Unexpected token '??='报错完全是Node.js版本不匹配导致:

2021-11-18T18:02:54.848192+00:00 app[worker.1]: agent ??= new https.Agent({ ...this.client.options.http.agent, keepAlive: true });
2021-11-18T18:02:54.848193+00:00 app[worker.1]: ^^^
2021-11-18T18:02:54.848193+00:00 app[worker.1]: SyntaxError: Unexpected token '??='

??=是ES2021新增的逻辑空赋值运算符,仅Node.js v15.0.0及以上版本支持,你使用的discord.js v13+最低要求Node.js v16.6.0,而Heroku默认使用v14版本的Node.js,自然无法识别该语法。

解决方案(推荐)
  • 打开项目根目录下的package.json文件,新增engines字段指定Node.js版本为16.x,配置参考如下:
{
  "name": "discord-bot",
  "version": "1.0.0",
  "engines": {
    "node": "16.x"
  },
  "dependencies": {
    "discord.js": "^13.0.0"
    // 其余原有依赖、配置保持不变
  }
}
  • 将修改后的package.json和对应的锁文件(package-lock.json/yarn.lock)一起提交到部署用的代码仓库
  • 重新触发Heroku构建,Heroku会自动读取配置安装对应版本的Node.js,部署完成后即可正常运行
备选方案(不推荐)

如果因特殊限制无法升级Node.js版本,可临时将discord.js降级到v12版本,执行命令:
npm install discord.js@12
该版本已停止官方维护,不支持Discord最新的交互、斜杠指令等功能,仅可作为临时应急使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:36:04