Cara Mudah Menggunakan Puppeteer Di Heroku - CRUDPRO

Cara Mudah Menggunakan Puppeteer Di Heroku

Cara Mudah Menggunakan Puppeteer Di Heroku

Cara menggunakan Puppeteer di Heroku

Sesudah menghabiskan beberapa jam mengupdate perpustakaan Puppeteer dan mengujinya di lingkungan Heroku, saya ingin membagikan penemuan saya. Usaha saya sudah berhasil menjalankan Puppeteer di Heroku, dan saya percaya informasi ini bisa membantu orang yang lain menghadapi tantangan sama.

Pertama untuk yang belum tahu apa itu perpustakaan Puppeteer.

Puppeteer ialah pustaka Node.js yang dikembangkan oleh Google yang memungkinkan Anda mengatur browser Chrome atau Chromium tanpa kepala secara terprogram lewat API tingkat tinggi.

Cara Mudah Menggunakan Puppeteer Di Heroku

Dan jangan lupakan Heroku.

Heroku ialah platform berbasis cloud yang menyederhanakan implementasi, pengendalian, dan penskalaan program tanpa mengharuskan pengembang untuk mengurus infrastruktur atau server.

Cara Mudah Menggunakan Puppeteer Di Heroku

Situasi

Saya sudah memakai Puppeteer untuk mengotomatiskan berbagai tindakan website, seperti membuat tangkapan layar dan PDF halaman website berkualitas tinggi.

Saat kami di Screenful memakai Heroku, saya perlu mempersiapkan Puppeteer di lingkungan Heroku.

Cara Mudah Menggunakan Puppeteer Di Heroku

Sesudah melakukan riset menyeluruh, terbukti bahwa saya perlu memakai buildpack Heroku untuk memastikan fungsionalitas yang akurat.

Jadi ini ialah buildpack yang saya pakai untuk menjalankan browser tanpa kepala puppeteer di Heroku.

Cara Mudah Menggunakan Puppeteer Di Heroku

Terimakasih untuk Jon Tewksbury.

Permasalahan

Sistem itu sudah berfungsi dengan sempurna selama hampir 2 tahun, tapi permasalahan muncul saat mencoba memutakhirkan perangkat lunak puppeteer.

Cara Mudah Menggunakan Puppeteer Di Heroku

Perpustakaan puppeteer stop bekerja karena tidak ada file eksekutor (browser).

Setelah beberapa riset, saya menemukan bahwa puppeteer@19 menyertakan peralihan signifikan terkait file eksekutor, yang menyebabkan permasalahan kompatibilitas.

Cara Mudah Menggunakan Puppeteer Di Heroku
Sebelumnya, selama instalasi puppeteer, file yang dapat dilakukan (browser) didownload dalam directory node_modules. Tetapi, saat ini sudah diganti untuk mengunduh di directory ~/cache/puppeter.

Sepanjang proses pembuatan, Heroku tidak menyalin file yang bisa dieksekusi yang dibutuhkan dari lingkungan pembuatan ke lingkungan dyno yang telah diselesaikan, sehingga file itu tidak ada. Akibatnya, program berhenti saat mencoba memakai file yang tidak bisa dijalankan yang tidak ada.

Saya sudah menemukan beberapa jawaban di google dan mencoba menghapus cache build Heroku, tetapi tidak berhasil…

Solusi

Setelah menghabiskan beberapa jam debugging dan berusaha mengidentifikasi akar penyebab permasalahan, saya bisa menemukan jalan keluar yang pantas.

Saya sudah membuat file postbuild.bash.

echo -e "Store puppeteer executable in cache\n"

mkdir ./.cache

mv /app/.cache/puppeteer ./.cache

Dan mengonfigurasinya di package.json untuk dieksekusi sesudah proses build Heroku.

...
"scripts": {
  ...
  "heroku-postbuild": "bash postbuild.bash"
},
...

Saat ini, setiap kali npm install mengunduh executable ke directory ~/.cache/puppetter, saya sudah memindahkannya ke directory root program sehingga proses build terakhir tidak akan melewatkan executable.

Bila Anda mencoba memakai perintah pwd dan ls dalam proses pembangunan postbuild.bash dan debug Heroku, karena itu Anda akan memperoleh deskripsi lengkap tentang apa yang terjadi. , Anda bisa memakai heroku run bash untuk masuk ke dyno dan cari file yang bisa dieksekusi.

***