我正在设置一个go应用并通过heroku进行部署。该应用程序可以在本地主机,127.0.0.1和0.0.0.0上正常运行。
我遇到了端口错误,可以通过设置该错误来解决,以便在heroku不给我端口的情况下,将其设置为8080。
func main () {
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
http.HandleFunc("/conservation/v1/", defaultHandler)
http.HandleFunc("/conservation/v1/country/" , countryHandler)
http.HandleFunc("/conservation/v1/species/", speciesHandler)
http.HandleFunc("/conservation/v1/diag/", diagHandler)
log.Fatal(http.ListenAndServe(":" + port, nil))
}
它应该可以工作,但我发现所有表明它应该可以工作的内容都无济于事。例如,当我尝试使用diag函数时,我会得到
at=error code=H10 desc="App crashed" method=GET path="/conservation/v1/diag" host=morning-temple-66987.herokuapp.com request_id=716af414-653a-4988-851e-f85d1a6ddb19 fwd="129.241.229.16" dyno= connect= service= status=503 bytes= protocol=https
作为完整的错误读数。使用/ county或/ species会给出几乎相同的错误消息,只是路径不同
我将其范围缩小到错误代码R10
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
现在的问题是,如何解决错误代码R10?
不知何故,否决了这个项目,使一个新项目成功了。我认为这可能是Procfile或go.mod文件中的错误,类似于这些内容。
我删除了所有文件并制作了一个新应用。重写Procfile并重新制作go.mod。我保留了main.go文件,它才起作用