LoginSignup
0
0

More than 5 years have passed since last update.

Heroku-16でpuppeteerを使う

Posted at

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が不要なバージョンがあるかも知れません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0