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.
Dan jangan lupakan Heroku.
Heroku ialah platform berbasis cloud yang menyederhanakan implementasi, pengendalian, dan penskalaan program tanpa mengharuskan pengembang untuk mengurus infrastruktur atau server.
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.
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.
Terimakasih untuk Jon Tewksbury.
Permasalahan
Sistem itu sudah berfungsi dengan sempurna selama hampir 2 tahun, tapi permasalahan muncul saat mencoba memutakhirkan perangkat lunak puppeteer.
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.
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.
***
Artikel Terkait Lainnya :
- Tutorial Membangun Chatbot Dengan React Dan OpenAI
- Cara Menyembunyikan Kategori Di WooCommerce
- Apakah Programmer Mempunyai Karier Yang Baik Dan Akankah Tetap Relevan Di Masa Depan?
- Ini Dia 7 Repositori GitHub Yang Harus Diikuti Setiap Developer Pada Tahun 2023
- Ini Dia 5 Tools Untuk Setiap Programmer Di 2023