我有以下 http.Handle 函數(簡化):func loginHandler(w http.ResponseWriter, r *http.Request) { cwd, _ := os.Getwd() t, err := template.ParseFiles(filepath.Join(cwd, "./views/login.html")) if err != nil { fmt.Fprintf(w, "503 - Error") fmt.Println(err) } else { t.Execute(w, nil) }}它在使用時按預期工作go build main.go,但是 - 運行后go install,我收到一個錯誤,它找不到文件(因為它現在被編譯到/bin/<appname>(沒有視圖文件夾的地方)。除了將視圖文件夾添加到/bin目錄或硬編碼路徑,我怎樣才能template.ParseFiles()找到正確的路徑?是否有一些標準方法可以包含用于編譯程序的“靜態”資源?
1 回答

皈依舞
TA貢獻1851條經驗 獲得超3個贊
沒有標準方法可以為編譯程序包含靜態資源;然而,一種常見的約定是將配置存儲在環境變量中。
例如,在運行您的應用程序時,將預期的環境變量放入環境中:
$> TEMPLATE_VIEWS=/var/local/app/views myapp
在您的代碼中,您會找到文件夾:
func loginHandler(w http.ResponseWriter, r *http.Request) {
t, err := template.ParseFiles(filepath.Join(os.Getenv("TEMPLATE_VIEWS"), "login.html"))
if err != nil {
fmt.Fprintf(w, "503 - Error")
fmt.Println(err)
} else {
t.Execute(w, nil)
}
}
- 1 回答
- 0 關注
- 153 瀏覽
添加回答
舉報
0/150
提交
取消