CentOS 7.X上部署Puppeteer遇到的问题

在部署使用了Puppeteer的功能时,遇到的主要的问题基本都和Chromium有关。

安装puppeteer

首先我们安装项目依赖(假装只有puppeteer):

npm install puppeteer

安装过程中,终端会停在node install.js一段时间,然后突然打印出了一堆错误信息

1
ERROR: Failed to download Chromium r637110! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.

这是因为国内环境的原因,我们下载Chromium失败了。

1. 使用淘宝源下载

我们可以使用国内的淘宝源来进行下载安装:

npm config set puppeteer_download_host=https://npm.taobao.org/mirrors
npm i puppeteer

也可以使用cnpm来进行安装,(国内用cnpm速度还是会快很多的):

npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm i puppeteer

2. 手动下载Chromium

我们安装puppeteer时先设置跳过Chromium的安装:

env PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install puppeteer //局部安装设置
npm config set puppeteer_skip_chromium_download true -g // 全局安装设置

我们安装完后,手动下载Chromium文件,解压后放在本地:

https://npm.taobao.org/mirrors/chromium-browser-snapshots/

Chromium版本信息可查:

puppeteer/package.json->puppeteer.chromium_revision

1.我们可以放在模块的默认读取目录下:

node_modules\puppeteer\.local-chromium\mac-637110(系统类型-版本号)\chrome-mac(下载的文件名)\

2.放置在任意目录下,运行时指定可执行文件:

puppeteer.launch({executablePath:'ChromiumExePath'})

启动puppeteer

当我们启动puppeteer时,终端可能会出现以下错误:

Chrome headless doesn't launch

这是因为CentOS上缺了很多浏览器所需要的依赖文件

我们按照官方指引下载全部文件:

yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc

然后再在运行时设置以下:

1
2
3
4
const browser = await puppeteer.launch({
headless: true,
args: ['--no-sandbox']
})

到此CentOS上终于启动了puppeteer相关的功能。

参考

chrome-headless-doesnt-launch

PUPPETEER_SKIP_CHROMIUM_DOWNLOAD

0%