最近利用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