在部署使用了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 | const browser = await puppeteer.launch({ |
到此CentOS
上终于启动了puppeteer
相关的功能。
参考