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

Heroku部署Discord Bot报AbortController错误且配置版本后构建失败求助

Discord Bot Heroku部署问题排查与解决方案

初始报错根因

首次启动出现ReferenceError: AbortController is not defined报错确实为Node.js版本不匹配导致:discord.js v13及以上版本要求Node.js运行环境版本≥16.6.0,而Heroku默认的Node.js运行版本低于该要求,缺少全局AbortController原生API。

添加版本配置后构建失败的排查步骤

  • 检查package.json语法正确性

确认你添加的engines字段为package.json的顶级字段,JSON语法无错误,无多余逗号、引号转义问题,正确写法参考:

{
  "name": "discord-bot-project",
  "version": "1.0.0",
  "main": "index.js",
  "engines": {
    "node": "16.7.0"
  },
  "dependencies": {
    "discord.js": "^13.1.0"
  }
}

JSON语法错误是触发构建失败最常见的原因。

  • 检查Heroku堆栈版本

旧版Heroku堆栈(如Heroku-18)不支持Node.js 16.x版本,需升级到Heroku-20及以上堆栈:

  1. 执行heroku stack查看当前使用的堆栈版本
  2. 若版本低于Heroku-20,执行heroku stack:set heroku-20修改堆栈
  3. 重新推送代码触发构建
  • 检查依赖版本匹配性

如果你使用的是discord.js v14及以上版本,要求Node.js版本≥16.9.0,此时可以将engines中的node版本调整为16.9.0或更高的长期支持版本,避免版本不兼容。

  • 清理Heroku构建缓存

Heroku残留的旧版本构建缓存可能导致新配置不生效,执行heroku builds:cache:purge -a 你的Heroku应用名称清理缓存后重新构建即可。

  • 检查Procfile配置

确认项目根目录下存在无后缀的Procfile文件,配置为worker进程运行Bot,避免Heroku判定为web服务触发端口检测错误:

worker: node index.js

验证步骤

排查完成后重新推送代码到Heroku,构建完成后执行heroku logs --tail查看运行日志,确认worker进程正常启动无报错即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:24:03