Heim >Backend-Entwicklung >Golang >Warum zeigt meine Golang-App auf Heroku nach einem erfolgreichen Build einen „Anwendungsfehler' an?
Bereitstellung einer Golang-App auf Heroku, Build erfolgreich, aber Anwendungsfehler
Bei der Bereitstellung einer Golang-Anwendung auf Heroku ist es wichtig, die Anwendung sicherzustellen ist an den richtigen Port gebunden. Andernfalls kann es dazu kommen, dass die Anwendung nicht gestartet werden kann und beim Zugriff auf Endpunkte die Meldung „Anwendungsfehler“ angezeigt wird.
In Ihrem Fall weisen die Protokolle darauf hin, dass die Anwendung innerhalb von 60 Sekunden nach dem Start aufgrund von beendet wird Der Webprozess kann sich nicht an den angegebenen Port binden. Um dieses Problem zu beheben, müssen Sie Ihren Webserver an den Port binden, der durch die Umgebungsvariable $PORT angegeben wird. Heroku setzt diese Umgebungsvariable automatisch auf die Standard-HTTP- und HTTPS-Ports, sodass Ihre Anwendung öffentlich zugänglich ist.
Um Ihren HTTP-Server an den erwarteten Port zu binden, ändern Sie Ihren Code wie folgt:
import ( "os" "github.com/gorilla/mux" "github.com/gorilla/context" "gopkg.in/paytm/grace.v1" ) func main() { log.Println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ CHIT STARTED $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$") log.Println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$") muxRouter := mux.NewRouter() muxRouter.HandleFunc("/", Articles) http.Handle("/", muxRouter) port := os.Getenv("PORT") if port == "" { port = "9000" // Default port if not specified } err := grace.Serve(":" + port, context.ClearHandler(http.DefaultServeMux)) if err != nil { log.Println("[ERROR GRACEFUL]", err) os.Exit(1) } os.Exit(0) }
Durch diese Änderung wird Ihre Anwendung nun an den von Heroku angegebenen Port gebunden und ist über Standard-HTTP- und HTTPS-Ports öffentlich zugänglich, 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!