Heim >Backend-Entwicklung >Golang >Warum zeigt meine Golang-App auf Heroku nach einem erfolgreichen Build einen „Anwendungsfehler' an?

Warum zeigt meine Golang-App auf Heroku nach einem erfolgreichen Build einen „Anwendungsfehler' an?

Linda Hamilton
Linda HamiltonOriginal
2024-12-08 01:33:12788Durchsuche

Why is my Golang app on Heroku showing 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn