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
相关产品推荐
相关产品推荐

