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

Heroku部署Discord Bot遭遇R10启动超时错误的求助

解决Heroku上Discord Bot的R10启动超时问题

你的问题是典型的Heroku进程类型配置错误导致的,先看看你遇到的错误详情:

Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2022-03-19T09:15:18.022903+00:00 heroku[web.1]: Stopping process with SIGKILL
2022-03-19T09:15:18.059850+00:00 app[web.1]: Error waiting for process to terminate: No child processes
2022-03-19T09:15:18.210022+00:00 heroku[web.1]: Process exited with status 22
2022-03-19T09:15:18.331083+00:00 heroku[web.1]: State changed from starting to crashed

Heroku的web进程类型强制要求应用在60秒内绑定到指定的$PORT环境变量,但你的Discord Bot是后台服务,根本不需要启动HTTP服务器监听端口,所以得用worker进程类型来运行它才行。

正确的解决步骤:

  1. 修正Procfile内容
    你的Bot是Node.js编写的,所以Procfile的正确内容应该是:

    worker: node index.js
    

    注意这几点:

    • 文件名必须是Procfile(首字母大写,没有任何后缀,绝对不能写成Procfile.txt)
    • 一定要放在项目的根目录下
    • 你之前尝试的worker: java -jar...完全不对,因为你的代码是Node.js程序,不是Java jar包
  2. 在Heroku控制台调整进程配置
    光改Procfile还不够,必须在Heroku后台关闭默认的web进程,启用worker进程:

    • 登录Heroku仪表盘,找到你的Bot应用
    • 进入「Resources」标签页
    • 找到「web npm start」这一行,点击右侧的铅笔图标,取消勾选后保存更改
    • 找到「worker node index.js」这一行,勾选它并保存更改
  3. 重新部署应用
    把修改后的Procfile提交到Git仓库,再重新部署到Heroku:

    git add Procfile
    git commit -m "Switch to worker process for Discord Bot"
    git push heroku main
    

为什么之前修改Procfile无效?

大概率是这两个原因:

  • 你没关闭Heroku上默认运行的web进程,Heroku还是会尝试启动web进程,结果因为没绑定端口超时崩溃
  • Procfile的格式或文件名错误,比如写成了小写的procfile,或者带了.txt后缀,导致Heroku识别不到正确的进程配置

最后检查下你的Bot代码,确认没有意外启动HTTP服务的逻辑(从你提供的代码来看是没有的),这样配置后,worker进程不会被要求绑定端口,就能稳定运行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:32:51