0

我有一个使用 socketMode: true 运行的 slack bolt-js 服务器应用程序,它在我的本地 PC 上运行良好,但是在网络测功机中将其移动到 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 流量。

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

4

2 回答 2

2

几天前我遇到了这个问题,我发现将 Heroku 上的测功机类型从更改webworker解决了这个问题。这个想法来自这个页面,特别是该Dyno configurations部分。

要更改测功机类型,请导航到ResourcesHeroku 应用程序的部分,您应该会看到如下内容: 资源选项卡

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

于 2021-09-02T16:59:04.880 回答
0

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

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

这可能对你有帮助。

于 2022-02-17T12:38:24.187 回答