首页 >后端开发 >Golang >为什么我在 Heroku 上的 Golang 应用程序在成功构建后显示'应用程序错误”?

为什么我在 Heroku 上的 Golang 应用程序在成功构建后显示'应用程序错误”?

Linda Hamilton
Linda Hamilton原创
2024-12-08 01:33:12788浏览

Why is my Golang app on Heroku showing an

在heroku上部署golang应用程序,构建成功,但应用程序错误

在Heroku上部署golang应用程序时,确保应用程序非常重要绑定到正确的端口。如果不这样做,可能会导致应用程序无法启动,并在访问端点时显示“应用程序错误”消息。

在您的情况下,日志表明应用程序在启动后 60 秒内被终止,原因是Web 进程无法绑定到指定端口。要解决此问题,您需要将 Web 服务器绑定到 $PORT 环境变量指定的端口。 Heroku 会自动将此环境变量设置为默认的 HTTP 和 HTTPS 端口,从而允许您的应用程序可公开访问。

要将 HTTP 服务器绑定到预期端口,请按如下所示修改代码:

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)
}

通过进行此更改,您的应用程序现在将绑定到 Heroku 指定的端口,并可在默认 HTTP 和 HTTPS 端口上公开访问,从而解决“应用程序错误”问题。

以上是为什么我在 Heroku 上的 Golang 应用程序在成功构建后显示'应用程序错误”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn