哈喽!今天心血来潮给大家带来了《在heroku上部署Go服务器并渲染后找不到404页面》,想必大家应该对golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!
问题内容
将我的应用程序部署到 heroku 后,我得到的只是 404 - 找不到页面错误。在我的本地机器上它运行得很好。
package main
import (
"encoding/JSON"
"fmt"
"log"
"net/Http"
"os"
)
type hellohngresponse struct{
slackusername string `json:"slackusername"`
backend bool `json:"backend"`
age int `json:"age"`
bio string `json:"bio"`
}
func hellohng(w http.responsewriter, r *http.request){
response := hellohngresponse{slackusername: "kodeforce98", backend: true, age: 24, bio: "proud firstborn, golang developer, committed christian, faithful boyfriend"}
encoder := json.newencoder(w)
encoder.encode(response)
}
我感觉罪魁祸首就在这里,但我仍然迷失方向。
func main(){
port := os.Getenv("PORT")
if port == ""{
port = "9090"
}
http.HandleFunc("/hellohng", helloHng)
log.Printf("Server starting on port %v\n", port)
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%v", port), nil))
}
我试图理解为什么我没有像在本地运行它时那样获得 json 输出。感谢您的每一次帮助
正确答案
一些猜测:
您可能根本没有部署 - 您是否遵循此处的部署指南:https://devcenter.heroku.com/articles/getting-started-with-go?singlepage=true?如果是这样,您在服务器日志中看到 404 了吗?
您发送的请求没有端口 - 您是否将请求发送到正确的端口? https://polar-inlet-4930.herokuapp.com:9000/hellohng。您还可以在代码中将端口从 9000 更改为 80,这可能会有所帮助,因为 80 是 WEB 请求的默认端口。