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

如何解决在Heroku托管Discord bot过程中遇到的报错问题

报错原因及解决方案

1. 依赖缺失或安装不完整

最新版discord.js的语音相关依赖属于可选依赖,若你的bot用到语音功能,Heroku构建时不会自动安装这类依赖,会触发模块找不到报错。

  • 若需使用语音功能,在项目根目录执行npm install libsodium-wrappers @discordjs/voice,将这两个依赖加入package.json的dependencies字段后重新提交代码部署。
  • 若无需使用语音功能,删除代码中所有语音相关逻辑的引用即可,也可在package.json中添加配置忽略可选依赖的安装。

2. Procfile路径配置错误

你当前的Procfile配置为worker: node ./src/index.js,如果项目文件结构和路径不匹配会触发文件找不到报错。

  • 确认项目根目录下是否存在src文件夹,且src文件夹内存在index.js文件。如果index.js直接存放在项目根目录,将Procfile内容修改为worker: node index.js即可。
  • 注意Procfile必须放在项目根目录,不能放在src等子文件夹内。

3. 环境变量未配置到Heroku

如果你的bot token、客户端ID等敏感参数存放在本地.env文件中,未同步到Heroku配置,会导致启动时验证失败报错。

  • 进入Heroku对应应用的后台,打开「Settings」选项卡找到「Config Vars」栏,点击显示配置变量后新增记录,KEY填DISCORD_TOKEN,VALUE填你的Discord bot实际token,保存后重启dyno。
  • 其他代码中用到的环境变量,也需要同步在Config Vars中添加对应的键值对。

4. Node.js版本不兼容

Heroku默认的Node.js版本可能和你本地使用的版本不一致,导致依赖编译失败无法启动。

  • 在package.json中添加engines字段指定Node.js版本,和你本地运行node -v得到的版本保持一致即可,示例配置如下:
{
  "engines": {
    "node": "18.x"
  }
}

5. Dyno类型配置错误

Discord bot属于后台Worker服务,不需要监听HTTP端口,如果开启了Web类型的dyno,Heroku会因为检测不到端口监听超时杀死进程。

  • 进入Heroku对应应用的「Resources」选项卡,关闭Web dyno的开关,开启Worker dyno的开关,保存后重启应用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:15:03