Heroku-18のstackも出てきて(まだbetaですが)、いよいよCedar-14もあと1年ほどでEoLなので重い腰を上げてとりあえずHeroku-16にアップデートしました。
puppeteerでいろいろするアプリを動かしていたのですが、良い機会なのでまずパッケージを最新にしました。
HTTPS警告
Cedar-14のままパッケージを最新にしたらHTTPSの警告でpage.goto()
が例外を吐きました。
puppeteerに同梱されるChromeがバージョンアップされたのでその影響でしょう。
これはlaunchオプションの ignoreHTTPSErrors
をtrueにする事で回避できました。
ここまでで動作に問題なかったのでStackをHeroku-16に上げました。
Puppeteer起動しない
Cedar-14に比べるとHeroku-16はDockerイメージのサイズがかなり小さくなっていろいろとライブラリが入らなくなったみたいなのでbuild-pack https://github.com/CoffeeAndCode/puppeteer-heroku-buildpack を追加しました。
でテストしてみるとpuppeteerが起動しない。
libatk-bridge-2.0.so.0 cannot be found.
まだライブラリが足りないみたいです。調べてみるとgtk+3.0を入れると入るやつみたいなので Aptfile
(https://github.com/heroku/heroku-buildpack-apt.git を利用)に追加してみたところ現時点最新のpuppeteer@1.4.0でも動作しました。
が、slug sizeが200MB程増えてしまい流石にでかすぎるので、どうにかならないかと調べたところ公式のトラブルシューティングにalpineのDockerで動作させる例がありました。
どうやらChrome64だとgtk+3.0を入れなくても良さそうです。
Chrome64が同梱されている中で最新のpuppeteerは0.13.0なので0.13.0にダウングレードしたところgtk+3.0無しでも動作しました。
もしかすると1.0.0〜1.3.0でもgtk+3.0が不要なバージョンがあるかも知れません。