gpt4 book ai didi

go - template.ParseFiles 的问题

转载 作者:数据小太阳 更新时间:2023-10-29 03:15:50 25 4
gpt4 key购买 nike

我有以下 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>(没有 views 文件夹)。除了将 views 文件夹添加到 /bin 目录或对路径进行硬编码外,如何我可以获得 template.ParseFiles() 以找到正确的路径吗?

是否有一些标准方法来包含要用于编译程序的“静态”资源?

最佳答案

没有标准方法可以为已编译程序包含静态资源;然而one通常的约定是将配置存储在环境变量中。

例如,在运行你的应用时,将期望的环境变量放入环境中:

$> 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)
}
}

关于go - template.ParseFiles 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36274555/

25 4 0