为了账号安全,请及时绑定邮箱和手机立即绑定

template.ParseFiles 的问题

template.ParseFiles 的问题

Go
慕妹3146593 2021-12-27 17:57:15
我有以下 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)

    }

}


查看完整回答
反对 回复 2021-12-27
  • 1 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号