无法在Heroku上启动浏览器进程

时间:2020-06-01 22:59:46

标签: node.js api heroku deployment puppeteer

我使用express和sulla(导入操纵up)作为核心节点构建了一个应用。

基本上,我会抓取一些数据并使用sulla通过whatsapp发送它们。 它在本地运行良好,但是当我在heroku上部署它时,我会遇到此问题:

无法启动浏览器 进程!\ n [0601 / 222716.792459:FATAL:zygote_host_impl_linux.cc(116)]否 可用的沙箱!更新您的内核或查看 https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md

有关使用SUID沙箱进行开发的更多信息。如果你想 要过着危险的生活,需要立即解决,您可以尝试 使用--no-sandbox ......不会生成核心文件。

故障排除: https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md

我已经在我的heroku应用程序中添加了以下buildpack:

https://github.com/jontewks/puppeteer-heroku-buildpack.git
heroku/nodejs
https://github.com/heroku/heroku-buildpack-chromedriver

我见过类似https://stackoverflow.com/a/52228855之类的解决方案,但是由于我没有直接使用人偶,所以我无法应用它。或清除heroku缓存而没有成功。

1 个答案:

答案 0 :(得分:0)

不幸的是,直到您使用的是当前的sulla的npm软件包,它在Heroku上都无法正常工作。如所链接的问题所述,您需要使用--no-sandbox启动puppeteer( --disable-setuid-sandbox arg对于Heroku不是必需的):

await puppeteer.launch({ args: ['--no-sandbox'] })

Sulla在npm软件包中缺少此arg launch)(current launch config)(not used launch config that would work with Heroku)。

非常好,您已经添加了buildpack,如果puppeteer在后台作为依赖项运行,则需要这些buildpack。

I。)。如果适合您,可以尝试使用sulla的分叉,称为 sulla-hotfix: https://www.npmjs.com/package/@jprustv/sulla-hotfix。这个still uses previous sulla puppeteer config,显然包含--no-sandbox启动参数。

确实是原始项目sulla来自@open-wa/wa-automate。可能可以在带有构建包的Heroku上使用。

II。),或者您可以根据MIT许可发布包含正确启动参数的sulla的修改版本。