RaspberryPiでPuppeteerを動かそうとするとbrowser is not defined
とエラーになる時の対処方法です。
原因
npmで「Puppeteer」をインストールすると、新たにChromiumもnode_modulesにインストールされ、PuppeteerはデフォルトではこのChromium使います。
しかし、このChromiumはx86用のChromiumのため、ARMのRaspberryPiで立ち上げようとしてエラーになります。
対処方法
RaspberryPiに元からインストールされているChromiumを使うように、puppeteer.launch()のオプション「executablePath」で、使用するChronimuのパスを設定します。
RaspberryPiに元からインストールされているChromiumのパスは/usr/bin/chromium-browser
になります。
また、PuppeteerにはChromiumをインストールしないパッケージ「puppeteer-core」があるので、「puppeteer」ではなく「puppeteer-core」を使った方が、node_modulesが軽くなるので良いかと思います。
上記の踏まえたサンプルプログラムです。
const puppeteer = require('puppeteer-core'); (async ()=>{ const browser = await puppeteer.launch({ executablePath: '/usr/bin/chromium-browser', headless: false }; const page = await browser.newPage(); await page.waitFor(5000); await browser.close(); })();
注意
古いバージョンのChromiumではPuppeteerは動作しないので、最新のChromiumを使う必要があります。