在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(官网):
- 下载并解压
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);
四. 缺少依赖问题
反复提示缺少各种依赖,到处搜刮一顿操作之后是没问题了,但也不知道哪些是无所谓的。
- 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.
解决办法:
- 使用 --no-sandbox 选项
const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });
- 以非 root 用户运行
- 在 Docker 容器内运行
六. 中文乱码问题
由于Linux对中文支持不好,需要手动安装中文字体,否则截图之后会发现中文部分全是小方框。
可安装文泉驿字体。
文泉驿是一个以开发开源、免费中文电子资源--如汉字字体、词库等--为目标的公益性组织。她的创办宗旨是实现“任何人在任何地方都可以自由使用汉字和汉语进行交流”。
- 查找字体
# 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踩坑
版权声明: 本文为博主 网无忌 原创文章,欢迎转载,但请务必标注原文链接。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步