Rumah >pembangunan bahagian belakang >Golang >Mengapa Apl My Go Berjaya Dibina pada Heroku Tetapi Gagal dengan 'Ralat Aplikasi'?

Mengapa Apl My Go Berjaya Dibina pada Heroku Tetapi Gagal dengan 'Ralat Aplikasi'?

DDD
DDDasal
2024-12-17 05:28:24178semak imbas

Why Does My Go App Build Successfully on Heroku But Fail with an

Menggunakan Apl Golang pada Heroku: Bina Berjaya tetapi Ralat Aplikasi

Percubaan awal untuk menggunakan aplikasi GoLang ke Heroku menggunakan sokongan Godep mengakibatkan binaan yang berjaya tetapi "Ralat Aplikasi" apabila mengakses titik akhir aplikasi. Untuk menyelesaikan masalah ini, mari kita mendalami masalah dan penyelesaiannya.

Ikhtisar Masalah:

Apl yang digunakan gagal bertindak balas apabila mengakses titik akhirnya (mis., '/ '). Log Heroku menunjukkan ralat yang menyatakan bahawa "Proses web gagal untuk mengikat $PORT."

Penyelesaian:

Heroku memerlukan aplikasi untuk mengikat pelayan web mereka ke port ditentukan oleh pembolehubah persekitaran PORT. Walau bagaimanapun, kod aplikasi pada masa ini memulakan pelayan pada port 9000.

Untuk menyelesaikan masalah ini, pelayan aplikasi harus dimulakan pada PORT yang ditentukan oleh Heroku. Begini cara untuk melakukannya:

import "os"

func main() {
  // ... (your existing code)

  // Get the port from the PORT environment variable, or default to 9000 if not set
  port := os.Getenv("PORT")
  if port == "" {
      port = "9000" // Default port if not specified
  }

  // Start the server on the specified port
  err := grace.Serve(":" + port, context.ClearHandler(http.DefaultServeMux))

  // ... (your existing code)
}

Dengan mengikat pada port yang betul, aplikasi tidak lagi akan menghadapi ralat "Boot timeout" dan akan dapat menyampaikan permintaan dengan jayanya pada kedua-dua port HTTP dan HTTPS melalui Heroku's pintu masuk.

Atas ialah kandungan terperinci Mengapa Apl My Go Berjaya Dibina pada Heroku Tetapi Gagal dengan 'Ralat Aplikasi'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn