centos-安装node-和-puppeteer

6次阅读

共计 1891 个字符,预计需要花费 5 分钟才能阅读完成。

1.centos 安装 node

(1).wget 下载源码

wget https://nodejs.org/dist/v10.16.3/node-v10.16.3.tar.xz

https://nodejs.org/dist 这个目录下可以找到各个版本的源码

(2). 解压

xz -d node-v10.16.3.tar.xz
tar -zxvf node-v10.16.3.tar

(3). 配置软连接
要想 node 能够在全局能够使用,需要添加软连接,配置完即可使用

ln -s /usr/local/node-v10.16.3/bin/node /usr/local/bin/node  
ln -s /usr/local/node-v10.16.3/npm /usr/local/bin/npm

(4). 测试
node -v

v10.16.3

npm -v

6.9.0

node 安装完,对应的 npm 也就下载安装完成了

ps:参考:https://github.com/nodejs/hel…

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

2. 注意:gtk3 会安装,更新 pango 包,所有操作需要在安装完整个包之后。

3. 去手动下载一个 1.40 版本的,然后使用 yum 本地安装

yum localinstall package_name

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'] 
})

正文完
 0