新しいことにはウェルカム

[技術] [電子工作] [ガジェット] [ゲーム] のメモ書き

RaspberryPiでpuppeteerを動かす方法




RaspberryPiでpuppeteerを動かそうとするとbrowser is not definedとエラーになる時の対処方法です。

RaspberryPiでpuppeteerを動かす方法

原因

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を使う必要があります。