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

Bolt-js开启Socket Mode部署到Heroku出现R10启动超时错误求助

Slack Bolt.js Socket模式部署Heroku R10报错解决方案

你遇到的报错:

2021-09-01T12:59:33.771745+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

错误根因

启用socketMode: true后,Bolt.js的app.start()方法不会启动HTTP服务器监听端口,仅会主动向外建立连接到Slack的WebSocket服务。而Heroku的web dyno强制要求进程必须在启动60秒内绑定$PORT监听HTTP请求,否则就会判定启动失败杀死进程。

你提到的文档描述不存在冲突:启用socketMode的Slack应用根本不需要接收外部主动发起的HTTP流量,所有和Slack的交互都通过客户端主动建立的长连接完成,完全符合worker dyno的使用场景。

具体解决步骤

  • 第一步:修改项目根目录下的Procfile,将启动命令前缀从web改为worker,示例:
    worker: node index.js
    
  • 第二步:修改Bolt应用启动代码,不需要传入process.env.PORT参数,socket模式下app.start()不需要监听端口:
    await app.start()
    
  • 第三步:登录Heroku控制台,进入对应项目的「Resources」页面,将web dyno的实例数调整为0,将worker dyno的实例数调整为1,保存后重新部署应用即可。

特殊场景说明

如果你的应用除了Slack相关功能外,还需要对外提供HTTP接口服务,就不能使用socketMode,需要切换到Slack的HTTP事件订阅模式,继续使用web dyno,此时app.start(process.env.PORT)会正常启动HTTP服务器监听端口,就能通过Heroku的启动检测。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:15:03