Dokku使用Puppeteer Chrome headless:"无法启动Chrome"

5

Dokku是一个类似于Heroku的替代品,可以自己托管。

我尝试使用以下代码来使用Puppeteer Chrome headless:

const browser = await puppeteer.launch({
     headless: true,
     args: [
          '--no-sandbox',
          '--disable-setuid-sandbox'
     ]
});

const page = await browser.newPage();

Dokku 构建和启动应用程序时,我遇到了以下错误:

错误:无法启动 Chrome!/app/node_modules/puppeteer/.local-chromium/linux-641577/chrome-linux/chrome: 加载共享库 libX11-xcb.so.1 时出错:没有那个文件或目录。解决方案:https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md

故障排除页面建议安装软件包。但是,由于Dokku使用Docker,因此无法访问此已安装软件包。
此外,我使用以下命令安装了 buildpack:
dokku buildpacks:add <app_name> jontewks/puppeteer

或者这个 git 代码库。
dokku buildpacks:add <app_name> https://github.com/jontewks/puppeteer-heroku-buildpack.git

我再次执行部署命令 dokku deploy <app_name>,但在日志中仍然出现错误。


这个有任何更新吗?你是怎么解决的?@primax - Hamid Salari
1个回答

1
我将回答这个问题,如果有人遇到同样的问题(就像我一样)。一个解决方案已经在 github项目中提出,由mskog提出。 puppeteer无法启动的根本原因是容器中缺少某些库。因此,在创建容器时需要安装它们。为此,mskog建议使用dokku-apt,这是一个Dokku插件,当启动容器时会为您安装库。
安装了dokku-apt之后,在项目根目录下创建一个名为apt-packages的文件,并在其中添加所需库的列表。

自3.0版本以来,puppeteer需要一个新的库libgbm-dev,该库未在github项目中指定,请使用以下列表。

gconf-service
libasound2
libatk1.0-0
libc6
libcairo2
libcups2
libdbus-1-3
libexpat1
libfontconfig1
libgcc1
libgconf-2-4
libgdk-pixbuf2.0-0
libglib2.0-0
libgtk-3-0
libnspr4
libpango-1.0-0
libpangocairo-1.0-0
libstdc++6
libx11-6
libx11-xcb1
libxcb1
libxcomposite1
libxcursor1
libxdamage1
libxext6
libxfixes3
libxi6
libxrandr2
libxrender1
libxss1
libxtst6
ca-certificates
fonts-liberation
libappindicator1
libnss3
lsb-release
libgbm-dev
xdg-utils
wget

1
谢谢,我一直在苦恼这个问题。 - cercxtrova

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接