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

Discord Bot从v12升级至v13后在Heroku部署出现UnhandledPromiseRejectionWarning: ReferenceError: AbortController is not defined错误求助

解决Heroku部署Discord.js v13时的AbortController is not defined错误

这个错误的核心原因很明确:Discord.js v13要求Node.js版本至少为v16.6.0,但Heroku默认给你的应用分配了v14.17.5,而AbortController是在Node.js v15.0.0才内置的API,v14版本根本没有这个对象,所以才会抛出引用错误。

下面是具体的修复步骤:

1. 在package.json中指定Node.js版本

在项目根目录的package.json文件里,添加engines字段,明确告诉Heroku你需要的Node版本。推荐使用16.x来匹配你本地的版本系列,这样Heroku会自动使用16分支的最新稳定版:

{
  "name": "your-discord-bot-name",
  "version": "1.0.0",
  "engines": {
    "node": "16.x"
  },
  // 保留你原有的其他字段(dependencies、scripts等)
}

2. 提交更改并重新推送到Heroku

修改完package.json后,通过Git提交并推送更新:

git add package.json
git commit -m "Set Node.js version to 16.x for Discord.js v13 compatibility"
git push heroku main

注意:如果你的主分支不是main,替换成你实际使用的分支名,比如master

3. 验证版本并重启Bot

推送完成后,你可以通过Heroku CLI确认Node版本是否已经更新:

heroku run node -v

如果输出是v16.x.x的格式,说明配置生效了。最后重启你的Bot进程,让新版本的Node环境生效:

heroku restart

额外排查点

如果还是遇到问题,检查一下Heroku应用的buildpack是否为官方的Node.js buildpack——有时候自定义buildpack会覆盖版本配置。你可以在Heroku控制台的应用设置里查看并确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:58:13