Go Web端點找不到靜態index.html文件
php小編香蕉發現,在使用Go語言開發Web端應用時,有時會遇到一個常見的問題:當我們嘗試存取Web端點時,卻收到一個404錯誤,提示找不到靜態index.html檔案。這個問題可能會讓開發者感到困惑,特別是對於初學者來說。那麼,我們該如何解決這個問題呢?接下來,我們將詳細介紹解決方案,幫助你順利解決這個問題。
問題內容
這是我的程式碼:
package main import ( "fmt" "log" "net/http" ) const customport = "3001" func main() { fileserver := http.fileserver(http.dir("./static")) port:= fmt.sprintf(":%s", customport) http.handle("/", fileserver) fmt.printf("starting front end service on port %s", port) err := http.listenandserve(port, nil) if err != nil { log.panic(err) } }
頂層資料夾是 microservices
並設定為 go 工作區。此網路服務將是眾多服務之一。它位於以下資料夾中:
microservices |--frontend |--cmd |--web |--static |--index.html |--main.go
我位於頂級微服務資料夾中,我以以下方式啟動它:go run ./frontend/cmd/web
。它啟動正常,沒有錯誤。但是當我轉到 chrome 並輸入 http://localhost:3001
時,我得到 404 頁面找不到。即使 http://localhost:3001/index.html
也會給予 404 頁面找不到。我剛剛學習 go,不知道為什麼找不到 ./static
資料夾?
解決方法
根據您的命令,路徑必須是./frontend/cmd/web/static,而不僅僅是./static。那不是便攜式的;路徑隨工作目錄而變化。
考慮嵌入靜態目錄。否則,您必須使路徑可配置(標誌、環境變數等)
嵌入的缺點是您必須在對靜態檔案進行任何變更後重建程式。
您也可以使用混合方法。如果設定了標誌(或其他),則使用它從磁碟提供服務,否則使用嵌入式檔案系統。該標誌在開發過程中很方便,並且嵌入式檔案系統使部署變得容易,因為您只需複製程式二進位檔案。
package main import ( "embed" "flag" "io/fs" "net/http" "os" ) //go:embed web/static var embeddedAssets embed.FS func main() { var staticDir string flag.StringVar(&staticDir, "static-dir", staticDir, "Path to directory containing static assets. If empty embedded assets are used.") flag.Parse() var staticFS fs.FS = embeddedAssets if staticDir != "" { staticFS = os.DirFS(staticDir) } http.Handle("/", http.FileServer(http.FS(staticFS))) // ... }
以上是Go Web端點找不到靜態index.html文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

Go爬蟲Colly中的Queue線程問題探討在使用Go語言的Colly爬蟲庫時,開發者常常會遇到關於線程和請求隊列的問題。 �...

Go語言中字符串打印的區別:使用Println與string()函數的效果差異在Go...

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

Go語言中結構體定義的兩種方式:var與type關鍵字的差異Go語言在定義結構體時,經常會看到兩種不同的寫法:一�...

Go指針語法及viper庫使用中的尋址問題在使用Go語言進行編程時,理解指針的語法和使用方法至關重要,尤其是在...
