centos 安装node 和 puppeteer

1.centos 安装 node

(1).wget 下载源码

wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz

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

(2).解压

xz -d node-v10.15.3.tar.xz
tar -xvf node-v10.15.3.tar

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

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 -v

v10.15.3

npm -v

6.8.0

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

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

2.安装 puppeteer 问题

(1)使用 puppeteer 做自动化需要安装Chrome浏览器

 因为墙的问题,会导致 puppeteer 无法安装 chromium,因为某些仓库无法git 下来,所以你的环境必须支持
(也可以使用docker 安装chromium,然后去调用浏览器,具体参考这个https://docs.browserless.io/docs/docker-quickstart.html)

(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'] 
})
390 声望
2 粉丝
0 条评论
推荐阅读
深入理解MySQL日志
默认安装时,错误日志通常在配置文件(my.cnf)中 mysqld 部分的 log-error 配置项进行设置;利用 MySQL 系统变量 log_error 可以查看错误日志的文件名

nicce阅读 954

从零搭建 Node.js 企业级 Web 服务器(十五):总结与展望
总结截止到本章 “从零搭建 Node.js 企业级 Web 服务器” 主题共计 16 章内容就更新完毕了,回顾第零章曾写道:搭建一个 Node.js 企业级 Web 服务器并非难事,只是必须做好几个关键事项这几件必须做好的关键事项就...

乌柏木66阅读 6.2k评论 16

从零搭建 Node.js 企业级 Web 服务器(一):接口与分层
分层规范从本章起,正式进入企业级 Web 服务器核心内容。通常,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,如下图:从上至下,抽象层次逐渐加深。从下至上,业务细节逐渐清晰。视图...

乌柏木43阅读 7.4k评论 6

从零搭建 Node.js 企业级 Web 服务器(二):校验
校验就是对输入条件的约束,避免无效的输入引起异常。Web 系统的用户输入主要为编辑与提交各类表单,一方面校验要做在编辑表单字段与提交的时候,另一方面接收表单的接口也要做足校验行为,通过前后端共同控制输...

乌柏木33阅读 6.2k评论 9

从零搭建 Node.js 企业级 Web 服务器(五):数据库访问
回顾 从零搭建 Node.js 企业级 Web 服务器(一):接口与分层,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,控制层与服务层实现了业务处理过程,模型层定义了业务实体并以 对象-关系...

乌柏木34阅读 4.6k评论 9

从零搭建 Node.js 企业级 Web 服务器(十三):断点调试与性能分析
Node.js 官方提供了断点调试机制,出于安全性考虑默认为关闭状态,可以通过 node 参数 --inspect 或 --inspect-brk 开启,配合 IDE 能够非常方便地调试代码,本章就上一章已完成的项目 licg9999/nodejs-server-ex...

乌柏木31阅读 3.9k评论 9

从零搭建 Node.js 企业级 Web 服务器(八):网络安全
计算机网络依据 TCP/IP 协议栈分为了物理层、网络层、传输层、应用层,通常基础设施供应商会解决好前三层的网络安全问题,需要开发者自行解决应用层的网络安全问题,本章将着重表述应用层常见的网络安全问题及处...

乌柏木33阅读 5.8k评论 1

390 声望
2 粉丝
宣传栏