在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中文网其他相关文章!