在wsl中部署puppeteer的相关笔记

一. 环境

 
WSL2:Ubuntu 22.04
NVM:0.39.7
Node.js:18.20.3
Npm:10.7.0
Puppeteer:22.12.1
 

二. 安装Node.js环境

 
习惯使用NVM管理Node版本,先来安装NVM(官网):
 

  1. 下载并解压
cd $HOME
mkdir -p .nvm
cd .nvm
wget https://github.com/nvm-sh/nvm/archive/refs/tags/v0.39.7.tar.gz
tar -zxvf v0.39.7.tar.gz

 
2. 配置环境
 
在~/.bashrc的末尾,添加如下语句:

export NVM_DIR="$HOME/.nvm/nvm-0.39.7"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

 
3. 使能配置
 

source ~/.bashrc

 
4. 安装Node.js版本

nvm install 18 --lts

 
--lts表示该大版本的最新稳定版
 
5. 查看当前已安装的Node.js版本列表:
 

nvm ls

 

三. puppeteer的应用

 

const pageOpts = {
	width: 1366,
	height: 800,
	deviceScaleFactor: 1,
};

const screenshotOpts = {
	type: "png",
	path: "thum.png",
	fullPage: true,
};

const url = "https://www.itez.com.cn";

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setViewport(pageOpts);
await page.goto(url, { waitUntil: "networkidle2" });
await page.screenshot(screenshotOpts);

 

四. 缺少依赖问题

 
反复提示缺少各种依赖,到处搜刮一顿操作之后是没问题了,但也不知道哪些是无所谓的。

  1. Debian发行版:
apt install -y gconf-service libc6 libcairo2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libstdc++6 libx11-6
apt install -y libx11-xcb1 libxcb1 libxcursor1 libxext6 libxi6 libxrender1 libxtst6 ca-certificates fonts-liberation libappindicator1 lsb-release xdg-utils
apt install -y libnspr4 libdrm2 libxkbcommon0 libgbm1 libpango-1.0-0 libpangocairo-1.0-0 libxshmfence1
apt install -y libgtk-3-dev libnotify-dev libgconf-2-4 libxss1
apt install -y libnss3
apt install -y libatk1.0-0
apt install -y libatk-bridge2.0-0
apt install -y libcups2
apt install -y libxcomposite1
apt install -y libxdamage1
apt install -y libxfixes3
apt install -y libxrandr2
apt install -y libasound2

 
2. Redhat发行版如CentOS:

yum install atk at-spi2-atk libdrm libXcomposite libXdamage libXrandr libX11 libXcursor libXext libXi libXtst cups-libs libXScrnSaver alsa-lib

 

五. 安全沙箱问题

 

错误信息:

Error: Failed to launch the browser process! undefined
[16644:16644:0705/112140.109819:ERROR:zygote_host_impl_linux.cc(99)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

解决办法:

  1. 使用 --no-sandbox 选项
const browser = await puppeteer.launch({
  args: ['--no-sandbox', '--disable-setuid-sandbox']
});

  1. 以非 root 用户运行
  2. 在 Docker 容器内运行
     

六. 中文乱码问题

 
由于Linux对中文支持不好,需要手动安装中文字体,否则截图之后会发现中文部分全是小方框。
可安装文泉驿字体。

文泉驿是一个以开发开源、免费中文电子资源--如汉字字体、词库等--为目标的公益性组织。她的创办宗旨是实现“任何人在任何地方都可以自由使用汉字和汉语进行交流”。
 

  1. 查找字体
# Debian
apt search wqy
# Redhat
yum search wqy


 
2. 安装字体

apt install fonts-wqy-microhei -y
apt install fonts-wqy-zenhei -y
apt install xfonts-wqy -y

 

七. 有用的资源

 
在查找问题过程中发现的一些宝藏资源,标记一下。
 
Ubuntu服务器安装puppeteer
ubuntu系统安装Puppeteer
Linux安装部署Puppeteer踩坑

posted @ 2024-07-05 14:08  网无忌  阅读(42)  评论(0编辑  收藏  举报