🪆

puppeteer19+dockerでエラーが出るときは$HOME確認

2023/04/19に公開

puppeteerをdockerで使っていて、v19にアプデしたら puppeteer.launch 実行時に以下のようなエラーが出た。

Could not find Chromium (rev. 1108766). This can occur if either
     1. you did not perform an installation before running the script (e.g. `npm install`) or
     2. your cache path is incorrectly configured (which is: /home/node/.cache/puppeteer).
    For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides/configuration.

v19から ~/.cache/puppeteer にchromiumがインストールされるようになっている。
https://github.com/puppeteer/puppeteer/releases/tag/v19.0.0

そのため、dockerで npm install したときとユーザーが異なっていたりするとHOMEディレクトリにchromiumが存在しないことになる。

例えば以下のように npm install するときとユーザーが同じであれば動作する。

USER node

WORKDIR /usr/src/app

COPY .npmrc ./
COPY --chown=node:node package*.json ./

RUN npm install

マルチステージビルドなどで別ステージから node_modules をコピってくるようにしてるときは $HOME/.cache/puppeteer も持ってくる。

Discussion