背景

我计划使用puppeteer爬点html数据,结果windows11上没问题 但在我的服务器centos8上确报错。

[root@104 auto-task]# npm run start
> auto-task@1.0.0 start
> node src/main.js
启动成功:http://localhost:3000
Error: Failed to launch the browser process!
/root/.cache/puppeteer/chrome/linux-114.0.5735.133/chrome-linux64/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory TROUBLESHOOTING: https://pptr.dev/troubleshooting
at Interface.onClose (file:///home/auto-task/node_modules/@puppeteer/browsers/lib/esm/launch.js:250:24)
at Interface.emit (node:events:525:35)
at Interface.close (node:internal/readline/interface:533:10)
at Socket.onend (node:internal/readline/interface:259:10)
at Socket.emit (node:events:525:35)
at endReadableNT (node:internal/streams/readable:1359:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)

原因分析

网上查找资料得知,本来就是不可能能一凡风顺,官方给出了要想成功使用的必备依赖包

安装必备依赖

yum install -y pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc

可能出现的问题

无法安装依赖ipa-gothic-fonts

但是我执行以上的安装这些依赖包命令,结果却报错,导致安装依赖失败。

如果你没有下边这个报错,请忽略此环节。

Failed to set locale, defaulting to C
Last metadata expiration check: 0:39:16 ago on Sun Jul 16 01:42:31 2023.
No match for argument: ipa-gothic-fonts
Error: Unable to find a match

还好英语我的英语略懂,根据提示可得知 依赖包 ipa-gothic-fonts找不到。 推测作者可能撤包,也可能是源的问题。

办法简单,通过查找资料获取ipa-gothic-fonts安装包手动安装即可。

curl -O https://rpmfind.net/linux/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/i/ipa-gothic-fonts-003.03-26.fc38.noarch.rpm
yum install -y ipa-gothic-fonts-003.03-15.el8.noarch.rpm

然后再通过命令安装剩余的依赖即可

yum install -y pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc

升级nss依赖

根据官方要求 升级nss依赖

yum update nss -y

可能出现的问题

执行以上我这里报错 提示我服务器上压根就没有nss这个包,

[root@104 ~]# yum update nss -y
Last metadata expiration check: 0:17:42 ago on Sun 16 Jul 2023 12:49:13 AM EDT.
Package nss available, but not installed.
No match for argument: nss
Error: No packages marked for upgrade.

那更好办了,直接全新安装即可

yum install nss -y

还是不能运行?

是的,按照官方要求,安装了上诉的这些必备依赖项之后,还是提示报错。这是怎么回事?

[root@104 auto-task]# npm run start
> auto-task@1.0.0 start
> nodesrc/main.js
启动成功:http://localhost:3000
Error: Failed to launch the browser process!
/root/.cache/puppeteer/chrome/linux-114.0.5735.133/chrome-linux64/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory TROUBLESHOOTING: https://pptr.dev/troubleshooting
at Interface.onClose (file:///home/auto-task/node_modules/@puppeteer/browsers/lib/esm/launch.js:250:24)
at Interface.emit (node:events:525:35)
at Interface.close (node:internal/readline/interface:533:10)
at Socket.onend (node:internal/readline/interface:259:10)
at Socket.emit (node:events:525:35)
at endReadableNT (node:internal/streams/readable:1359:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)

根据分析 应该(chrome运行时的)依赖仍然缺少。我们去验证下

cd /root/.cache/puppeteer/chrome/linux-114.0.5735.133/chrome-linux64
ldd chrome | grep not

下边可以看到缺少哪些依赖 导致chrome启动失败

[root@104 chrome-linux64]# ldd chrome | grep not
libdrm.so.2 => not found
libgbm.so.1 => not found

那我们安装这些缺少的依赖即可

yum install libdrm libgbm libxshmfence -y

最后再次执行上边的命令看一次是否缺少依赖,如果不出意外,全部依赖安装成功!

结语

至此,再试试你的程序 是不是可以正常运行puppeteer了!

其他问题

装完后 打开shell 可能会提示如下错误,但不影响使用

manpath: can't set the locale; make sure $LC_* and $LANG are correct

这是语言和区域的兼容问题,如果觉得影响美观,可以执行如下代码即可。

echo "LC_ALL=en_US.UTF-8" >> /etc/environment
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
# locale-gen en_US.UTF-8

centos8安装puppeteer的更多相关文章

  1. centos8 安装vmware需要的内核头文件 kernel-headers.

    centos8 安装vmware需要的内核头文件 kernel-headers. uname -r (查看内核版本) rpm -qa kernel-headers (查看kernel-headers版 ...

  2. Centos8安装Docker提示:package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed

    Centos8安装Docker提示:package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but ...

  3. centos8安装fastdfs6.06集群方式三之:storage的安装/配置/运行

    一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...

  4. centos8安装fastdfs6.06集群方式二之:tracker的安装/配置/运行

    一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...

  5. centos8安装fastdfs6.06集群方式一之:软件下载与安装

    一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...

  6. CentOS8 安装MySQL5.7

    CentOS_8 安装MySQL5.7 1.在安装之前,如果你的系统曾经安装过Mariadb,请先卸载:yum remove mariadb*2.安装依赖 yum install -y epel-re ...

  7. CentOS8安装VirtualBox,并创建CentOS虚拟机

    安装VirtualBox 执行以下命令并启用VirtualBox和EPEL包仓库 [root@localhost~] dnf config-manager --add-repo=https://dow ...

  8. 在MacOS安装puppeteer

    安装node:升级:npm i npm 安装yarn:需要注意先把yarn的流程跑完,特别是package.json 安装puppeteer:yarn add puppeteer 安装完成以后需要重启 ...

  9. CentOS8安装Geant4笔记(三):Geant4介绍、编译、安装支持Qt5界面并运行exampleB1例程显示Qt界面

    前言   上一篇,安装了Qt5环境.  本篇在服务器CentOs8.2上安装geant4软件,geant4使用Qt5来显示.   GEANT4 介绍   Geant4 是一个用于模拟粒子穿过物质的工具 ...

  10. Centos8安装nvidia驱动

    Centos8安装nvidia驱动 1. 查看显卡型号 lspci | grep-i nvidia 或者 lspci -vnn | grep VGA 2. 前往nvidia官网下载对应驱动 NVIDI ...

随机推荐

  1. Nodejs与管道和信号

    Nodejs与管道 Linux的其中一个设计哲学就是小而精,一个程序只做一件事情,然后通过管道将多个程序连接起来完成复杂的任务. 比如如下的命令: ps -ef | grep node cat aaa ...

  2. BotSharp + MCP 三步实现智能体开发

    1. 简介 1.1 什么是MCP Model Context Protocol(MCP)模型上下文协议是一种标准化协议,它让大模型能够更容易地和外部的数据.工具连接起来.你可以把MCP想象成一个通用的 ...

  3. 使用 AutoGen Studio 打造你的私有团队

    AI Agent 无疑是今年最火爆的概念,从科技巨头的战略布局到创业公司的创新产品,AI 智能体正在重塑我们与机器交互的方式.无论是自动化任务.个性化服务,还是复杂问题的协同解决,AI Agent 都 ...

  4. cmd窗口中执行shell文件的方式

    使用cmd打开窗口后,使用powershell切入ps状态,然后使用sh命令即可执行shell文件,切入ps状态所在的目录为Administrator目录 bat设置Path变量 设置好sh.exe的 ...

  5. JDK1.8的ConcurrentHashMap的put方法源码

    一.JDK1.8的ConcurrentHashMap的put方法源码 ConcurrentHashMap 是 Java 并发包(java.util.concurrent)中的一个高性能线程安全哈希表实 ...

  6. JVM 的内存区域是如何划分的?

    JVM 的内存区域划分 JVM 在运行时会将内存划分为多个区域,用于管理程序运行时的不同类型数据.以下是 JVM 内存的主要划分: 1. 方法区(Method Area) 定义: 方法区是运行时数据区 ...

  7. Maven版本号管理规范:为何父POM是统一依赖版本的最佳实践?

    结论先行 在Maven多模块项目中,依赖的版本号应集中定义在父POM的<dependencyManagement>中,子模块通过继承父POM来引用版本号,通常无需在子POM中重复声明.这能 ...

  8. 工具 | ApplicationScanner

    0x00 简介 ApplicationScanner是一款APP客户端安全项检测工具. 下载地址: ApplicationScanner下载: ApplicationScanner下载 0x01 功能 ...

  9. 【笔记】Excel 2021|重要篇|(一)VBA精准控制选择范围、VBA提高运行速度并降低运行时的内存消耗

      最近总是遇到只有Excel表.没有数据库的情况,不太可能让别人搭Python环境来建数据库,但对常用数据库的使用也不太熟悉,也没买服务器不能让别人远程操控.再加上Python操作Excel的效率令 ...

  10. 操作系统综合题之“采用时间片轮转调度算法(Round-Robin,RR)执行,分时系统中的进程可能出现的状态变化”

    一.问题:某分时系统中的进程可能出现下图所示的状态变化,请回答下列问题: 1.根据图示,您认为该系统采用的是什么进程调度策略? 2.把图中所示的每一个状态变化的原因填在下表相应位置. 变化 原因 1 ...