在wsl中部署puppeteer的相關筆記

网无忌發表於2024-07-05

一. 環境


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

二. 缺少依賴問題


反覆提示缺少各種依賴,到處搜刮一頓操作之後是沒問題了,但也不知道哪些是無所謂的

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

三. 安全沙箱問題

錯誤資訊:

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踩坑

相關文章