Ich stelle Heroku bereit und habe die folgenden Skripte in mein package.json
:
"scripts": {
"heroku-postbuild": "yarn run build"
"start": "NODE_ENV=production node build/server.js"
}
Leider ist die env var PORT
zur Build-Zeit nicht bekannt und wird stattdessen von Heroku zur Laufzeit zugewiesen. Vor diesem Hintergrund habe ich versucht, meine Skripte so zu ändern, dass sie wie folgt aussehen:
"scripts": {
"start": "NODE_ENV=production yarn run build && node build/server.js"
}
Das dauert leider zu lange und endet nach dem 60-Sekunden-Heroku-Timeout bindend:
2017-09-06T01:23:13.536789+00:00 app[web.1]: Client wird kompiliert...
2017-09-06T01:23:14.395857+00:00 heroku[web.1]: Fehler R10 (Boot-Timeout) -> Webprozess konnte innerhalb von 60 Sekunden nach dem Start nicht an $PORT gebunden werden
2017-09-06T01:23:14.395963+00:00 heroku[web.1]: Prozess stoppen mit SIGKILL
2017-09-06T01:23:14.499913+00:00 heroku[web.1]: Prozess mit Status 137 beendet
2017-09-06T01:23:14.509625+00:00 heroku[web.1]: Status geändert von Start auf Absturz
Gibt es eine Möglichkeit, dass wir den Port zur Build-Zeit nicht benötigen? Warum wird es dann überhaupt benötigt?
Sie können razzle-heroku verwenden :) Es erweitert die Standard-Razzle-Konfiguration, damit es auf Heroku funktioniert.
Ahh, das wusste ich nicht, danke für den Hinweis! Wenn ich bereits razzle.config.js
mit einer benutzerdefinierten modify
Funktion habe, kann ich diese dann noch verwenden und gleichzeitig razzle-heroku verwenden?
// 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
},
}
Vielleicht sowas?
Hilfreichster Kommentar
Vielleicht sowas?