Saya menyebarkan ke Heroku, dan saya menyertakan skrip berikut di package.json
:
"scripts": {
"heroku-postbuild": "yarn run build"
"start": "NODE_ENV=production node build/server.js"
}
Sayangnya, PORT
env var tidak diketahui pada waktu pembuatan dan sebaliknya ditetapkan oleh Heroku pada waktu berjalan, dan karena razzle perlu mengetahui port pada waktu pembuatan, itu berarti saya harus membangun sebelum memulai server. Dengan mengingat hal itu, saya mencoba mengubah skrip saya agar terlihat seperti berikut:
"scripts": {
"start": "NODE_ENV=production yarn run build && node build/server.js"
}
Sayangnya, itu memakan waktu terlalu lama dan akhirnya mengikat setelah batas waktu Heroku 60 detik:
06-09-2017T01:23:13.536789+00:00 aplikasi[web.1]: Mengkompilasi klien...
09-06T01:23:14.395857+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Proses web gagal mengikat $PORT dalam waktu 60 detik setelah peluncuran
09-06T01:23:14.395963+00:00 heroku[web.1]: Menghentikan proses dengan SIGKILL
09-06T01:23:14.499913+00:00 heroku[web.1]: Proses keluar dengan status 137
09-06T01:23:14.509625+00:00 heroku[web.1]: Status berubah dari mulai mogok
Apakah ada cara agar kami tidak memerlukan port pada waktu pembuatan? Mengapa itu dibutuhkan?
Anda dapat menggunakan razzle-heroku :) Ini memperluas konfigurasi razzle default untuk membuatnya berfungsi di heroku.
Ahh, tidak tahu tentang itu, terima kasih telah menunjukkannya! Jika saya sudah memiliki razzle.config.js
dengan fungsi kustom modify
, apakah ada cara agar saya tetap dapat menggunakannya sambil menggunakan razzle-heroku?
// razzle.config.js
const razzleHeroku = require("razzle-heroku")
module.exports = {
modify: (config, {target, dev}, webpack) => {
config = razzleHeroku(config, {target, dev}, webpack)
// do something to config
return config
},
}
Mungkin sesuatu seperti ini?
Komentar yang paling membantu
Mungkin sesuatu seperti ini?