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();
}
})();