ツー

日常の記録

WSLでpuppeteer

Linux上ではなくWindows上のChromeを呼んだり、バイナリダウンロードしたりと、いろいろ試したけどうまくいかなかったんだけど、以下で試したらあっさり動いたのでメモ。

セットアップのコマンド

sudo apt-get install libappindicator1 libappindicator3-1 fonts-liberation

curl -O https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

sudo dpkg -i google-chrome-stable_current_amd64.deb

PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 npm i puppeteer-core

node yourscript.js

解説

まず、ふつうに npm i puppeteer-core とやるとChromeのバイナリをダウンロードしてくる処理が走るが、環境変数PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 をセットするとそのダウンロード処理をスキップできる。

スキップしたら手元にChromeのバイナリが無いことになるが、それは公式から落としてきて使う。

puppeteerを読み込み処理は以下の感じで、あとは普通に処理を書けばよい。

const puppeteer = require("puppeteer-core");

(async () => {
    const browser = await puppeteer.launch({ executablePath: "/usr/bin/google-chrome-stable" });
    const page = await browser.newPage();

    try {
        await page.goto('https://www.google.co.jp/');
        await page.screenshot({ path: 'image.png' });
    } catch (err) {
        console.log(err);
    } finally {
        await browser.close();
    }
})();