【问题标题】:Bolt-js in socket mode on heroku fails with Error R10Heroku 上套接字模式下的 Bolt-js 失败并出现错误 R10
【发布时间】:2021-09-01 14:22:27
【问题描述】:

我有一个使用 socketMode: true 运行的 slack bolt-js 服务器应用程序 它在我的本地电脑上运行良好,但是在网络测功机中将其移动到 Heroku 时,它在 1 分钟后失败。它启动得很好,在那一分钟内它功能齐全,但 1 分钟后我明白了

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

我的 bolt-js 应用程序是这样启动的:

await app.start(process.env.PORT);

我认为 Heroku 未能检测到此端口上有一个 websocket 打开然后超时。

我已经浏览了很多文档。我必须说 bolt-js 文档与 Heroku 的文档有冲突。他们建议我使用 worker dyno,但 Heroku 明确表示 worker dyno 无法接收 Web HTTP 流量。

在这里完全不知所措。有什么想法吗?

【问题讨论】:

    标签: heroku slack slack-api bolt


    【解决方案1】:

    几天前我遇到了这个问题,我发现将 Heroku 上的 dyno 类型从 web 更改为 worker 解决了这个问题。这个想法来自from this page,特别是Dyno configurations 部分。

    要更改测功机类型,请导航到 Heroku 应用程序的 Resources 部分,您应该会看到如下内容: Resources Tab

    您想从那里编辑 web 类型并将其关闭 - 对 worker 类型执行相同操作并将其打开。测功机会自动重新启动,因此您应该能够立即查看日志。

    【讨论】:

      【解决方案2】:

      这个问题是很久以前发布的,但可能对任何人都有帮助。 您可以在应用配置中添加端口,例如

      const {App} = require('@slack/bolt');
      const app = new App({
          token:process.env.bot_token,
          port: process.env.PORT || 3000,
      });
      (async()=>{
      await app.start();
      })
      

      这可能对你有帮助。

      【讨论】:

        猜你喜欢
        • 2015-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-25
        • 2019-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多