1.centos 安装 nodenode
(1).wget 下载源码linux
wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz
https://nodejs.org/dist 这个目录下能够找到各个版本的源码git
(2).解压github
xz -d node-v10.15.3.tar.xz tar -xvf node-v10.15.3.tar
(3).配置软链接
要想node可以在全局可以使用,须要添加软链接,配置完便可使用chrome
ln -s /usr/local/node-v10.15.3/bin/node /usr/local/bin/node ln -s /usr/local/node-v10.15.3/npm /usr/local/bin/npm
(4).测试
node -vnpm
v10.15.3
npm -vcentos
6.8.0
node 安装完,对应的npm也就下载安装完成了浏览器
ps:参考:https://github.com/nodejs/hel...less
2.安装 puppeteer 问题测试
(1)使用 puppeteer 作自动化须要安装Chrome浏览器
由于墙的问题,会致使 puppeteer 没法安装 chromium,由于某些仓库没法git 下来,因此你的环境必须支持
(2)安装 puppeteer 以及 extra 出现的问题
Q1:
(node:19180) UnhandledPromiseRejectionWarning: Error: Failed to launch chrome!
/data/www/vhosts/aps_task/httpdocs/node_modules/puppeteer/.local-chromium/linux-686378/chrome-linux/chrome: error while loading shared libraries: libXcomposite.so.1: cannot open shared object file: No such file or directory
TROUBLESHOOTING: https://github.com/GoogleChro...
A:由于 装完浏览器后,须要安装依赖的一些扩展,
具体看 https://github.com/GoogleChro...
注意,安装完了以后,记得执行:
yum update nss -y
某些包报错的话,可执行:
yum update glib2 -y
Q:2
(node:20844) UnhandledPromiseRejectionWarning: Error: Failed to launch chrome!
/data/www/vhosts/aps_task/httpdocs/node_modules/puppeteer/.local-chromium/linux-686378/chrome-linux/chrome: symbol lookup error: /lib64/libpangoft2-1.0.so.0: undefined symbol: FcWeightFromOpenTypeDouble
/lib64/libpangoft2-1.0.so.0 这个文件是存在的,但仍是会报错
缘由是:当前安装的是 1.42 版本,版本过高,解决方式安装低版本便可,官方也出了bug 报告,存在这个问题。
参考这个:https://bugs.archlinux.org/ta...
解决方式:
1.用 yum 安装完以后,卸载掉 pango。注意卸载不要使用 yum remove 由于会把依赖的包也卸载了。
使用
rpm -e --nodeps package_name rpm -e --nodeps pango.x86_64
2.注意:gtk3 会安装,更新 pango 包,全部操做须要在安装完整个包以后。
3.去手动下载一个 1.40 版本的,而后使用 yum 本地安装
下载地址:https://buildlogs.centos.org/...
具体地址:https://buildlogs.centos.org/...
yum localinstall package_name yum localinstall pango-1.40.x86_64.rpm
Q.3
关于 Sandbox 问题,
(node:32577) UnhandledPromiseRejectionWarning: Error: Failed to launch chrome!
(chrome:32588): Gtk-WARNING **: 01:34:12.473: cannot open display:
在 args 参数加上 ['--no-sandbox', '--disable-setuid-sandbox']
配置成 去沙箱
await puppeteer.launch({ headless: true, //Setting Up Chrome Linux Sandbox, 去沙箱运行 args: ['--no-sandbox', '--disable-setuid-sandbox'] })