Menggunakan aplikasi golang pada heroku, membina berjaya tetapi ralat aplikasi
Apabila menggunakan aplikasi golang pada Heroku, adalah penting untuk memastikan aplikasi itu terikat ke port yang betul. Kegagalan berbuat demikian boleh mengakibatkan aplikasi gagal memulakan dan memaparkan mesej "Ralat Aplikasi" semasa mengakses titik akhir.
Dalam kes anda, log menunjukkan bahawa aplikasi sedang dimatikan dalam masa 60 saat selepas pelancaran disebabkan oleh proses web tidak dapat mengikat ke port yang ditentukan. Untuk menyelesaikan isu ini, anda perlu mengikat pelayan web anda ke port yang ditentukan oleh pembolehubah persekitaran $PORT. Heroku secara automatik menetapkan pembolehubah persekitaran ini kepada port HTTP dan HTTPS lalai, membolehkan aplikasi anda boleh diakses secara umum.
Untuk mengikat pelayan HTTP anda ke port yang dijangka, ubah suai kod anda seperti berikut:
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) }
Dengan membuat perubahan ini, aplikasi anda kini akan terikat pada port yang ditentukan oleh Heroku dan boleh diakses secara umum pada port HTTP dan HTTPS lalai, menyelesaikan masalah Isu "Ralat Aplikasi".
Atas ialah kandungan terperinci Mengapakah apl Golang saya pada Heroku menunjukkan 'Ralat Aplikasi' selepas binaan yang berjaya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!