Bereitstellung einer Golang-App auf Heroku: Build-Erfolg, aber Anwendungsfehler
Bei der Bereitstellung einer Golang-Anwendung auf Heroku mit Go-Abhängigkeitsunterstützung müssen Sie Beim Versuch, auf Endpunkte zuzugreifen, kann ein „Anwendungsfehler“ auftreten. Dieses Problem tritt auf, wenn der Webserver nicht ordnungsgemäß an den entsprechenden Port auf Heroku gebunden ist.
Ihre Anwendungsprotokollmeldungen weisen auf den folgenden Fehler hin:
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
Ursache:
Das Problem wird durch den Versuch verursacht, den Server an einem fest codierten Port (9000) zu starten, anstatt ihn an den von Heroku angegebenen Port zu binden Umgebungsvariable $PORT.
Lösung:
Um dieses Problem zu beheben, starten Sie den Server mithilfe der Umgebungsvariablen $PORT am richtigen Port. Ersetzen Sie Ihren vorhandenen Code:
err := grace.Serve(":9000", context.ClearHandler(http.DefaultServeMux))
Mit Folgendem:
port := os.Getenv("PORT") if port == "" { port = "9000" // Default port if not specified } err := grace.Serve(":" + port, context.ClearHandler(http.DefaultServeMux))
Diese Änderung stellt sicher, dass der Server ordnungsgemäß an den von Heroku angegebenen Port bindet, wodurch das Problem „Anwendungsfehler“ behoben wird.
Das obige ist der detaillierte Inhalt vonWarum zeigt meine Golang-App auf Heroku nach einem erfolgreichen Build einen „Anwendungsfehler' an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!