最近利用puppeteer实现了定时生成网站静态html的功能,需要部署到linux环境下,踩了一些坑,所以做了以下记录。
ubuntu安装google chorme
下载 .deb
安装包后直接安装即可
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb
更新google chorme版本
如果需要更新本地的google chorme,通过以下命令即可
sudo yum update google-chrome-stable
启动google chorme报错
error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
这是由于缺失 libXss.so
库,只需要安装即可
sudo yum install libXss.so.1
启动puppeteer服务
启动puppeteer服务代码如下
const browser = await puppeteer.launch({
headless: true,
defaultViewport: null,
timeout: 0,
ignoreHTTPSErrors: true
});
在运行脚本,报了以下错误
这个是由于缺少了运行chorme内核相关的库,解决方法如下
sudo apt-get install gconf-service libasound2 libatk1.0-0 libatk-bridge2.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 xdg-utils wget
安装完成相关依赖后,运行后还是报错。。。
UnhandledPromiseRejectionWarning: Error: Failed to launch chrome!
解决方法新增 --no-sandbox
即可
const browser = await puppeteer.launch({
headless: true,
defaultViewport: null,
timeout: 0,
ignoreHTTPSErrors: true,
args: [
'--no-sandbox',
],
});
window环境下puppeteer安装
在window安装puppeteer后一直提示
Chromium revision is not downloaded. Run "npm install" or "yarn install"
只需要运行
node node_modules/puppeteer/install.js