在 Heroku 上托管时,Puppeteer discord bot 不断崩溃

Posted

技术标签:

【中文标题】在 Heroku 上托管时,Puppeteer discord bot 不断崩溃【英文标题】:Puppeteer discord bot keeps crashing when hosted on Heroku 【发布时间】:2020-09-01 08:05:40 【问题描述】:

Bot 在本地运行良好,甚至在模拟的 Heroku 本地 heroku local web 中也能正常工作,但在其在线服务器上托管时会在一两分钟后崩溃。

我已经为 puppeteer 安装了 buildpack: https://github.com/jontewks/puppeteer-heroku-buildpack 我清除了构建缓存: https://help.heroku.com/18PI5RSY/how-do-i-clear-the-build-cache

我已尝试手动将我的工作人员缩放设置为 1 heroku ps:scale web=1

这是我的 puppeteer 浏览器启动参数:args: ["--no-sandbox", "--disable-setuid-sandbox"],


我的依赖列表如下:

discord.js dotenv 节点获取 傀儡师 fs

日志没用:

2020-05-15T11:40:56.804117+00:00 heroku[web.1]: State changed from crashed to starting
2020-05-15T11:41:22.345051+00:00 app[web.1]:
2020-05-15T11:41:22.345073+00:00 app[web.1]: > discordbot@1.0.0 start /app
2020-05-15T11:41:22.345073+00:00 app[web.1]: > node bot.js
2020-05-15T11:41:22.345074+00:00 app[web.1]:
2020-05-15T11:42:20.278141+00:00 heroku[web.1]: State changed from starting to crashed
2020-05-15T11:53:02.553013+00:00 heroku[web.1]: State changed from crashed to starting
2020-05-15T11:53:25.758932+00:00 app[web.1]:
2020-05-15T11:53:25.758955+00:00 app[web.1]: > discordbot@1.0.0 start /app
2020-05-15T11:53:25.758956+00:00 app[web.1]: > node bot.js
2020-05-15T11:53:25.758956+00:00 app[web.1]:
2020-05-15T11:54:18.310840+00:00 heroku[web.1]: State changed from starting to crashed

【问题讨论】:

—disable-dev-shm-usage 发现于github.com/heroku/heroku-buildpack-google-chrome/issues/… 没有解决我的问题 从 heroku 仪表板打印日志 我做到了,它与您在我的帖子中看到的日志相同。除了将状态从开始更改为崩溃之外,没有关于实际崩溃的详细信息 【参考方案1】:

我遇到了类似的问题并应用了这个: (复制自 Puppeteer Troubleshooting 网站。它成功了!)

在 Heroku 上运行 Puppeteer

在 Heroku 上运行 Puppeteer 需要一些额外的依赖项,这些依赖项不包含在 Heroku 为您构建的 Linux 机器上。要添加部署依赖项,请将 Puppeteer Heroku buildpack 添加到 Settings > Buildpacks 下的应用程序的 buildpacks 列表中。

buildpack 的 url 是 https://github.com/jontewks/puppeteer-heroku-buildpack

确保在启动 Puppeteer 时使用“--no-sandbox”模式。这可以通过将其作为参数传递给您的 .launch() 调用来完成:puppeteer.launch( args: ['--no-sandbox'] );。

当您单击添加 buildpack 时,只需将该 URL 粘贴到输入中,然后单击保存。在下一次部署时,您的应用还将安装 Puppeteer 需要运行的依赖项。

如果您需要渲染中文、日文或韩文字符,您可能需要使用带有其他字体文件的 buildpack,例如 https://github.com/CoffeeAndCode/puppeteer-heroku-buildpack

还有来自@timleland 的另一个简单指南,其中包括一个示例项目:https://timleland.com/headless-chrome-on-heroku/。

【讨论】:

以上是关于在 Heroku 上托管时,Puppeteer discord bot 不断崩溃的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 discord.py 机器人在 Heroku 上托管时没有声音?

在 Heroku 上托管时,Selenium 应用程序重定向到 Cloudflare 页面

Discord.js 我的机器人在 Heroku 上托管时找不到任何父或子频道

在 Netlify 上托管时设置电子邮件

在 unix (nginx) 上托管时 .NET Core 中的 TimeZoneInfo

在 AWS 上托管时,拒绝为目标域生成登录提示的权限