去Template.ParseFiles和filepath.Join

时间:2015-09-14 00:58:26

标签: go

我正在尝试从目录加载一个html文件,我收到错误"打开模板:没有这样的文件或目录"

我的目录结构在

下面

/用户/ {名} /去/ SRC /应用 main.go

/用户/ {名} /去/ SRC /应用程序/模板 mytemplate.html

错误来自下面一行

template.Must(template.ParseFiles(filepath.Join("templates", "mytemplate.html")))

我是新手,只是试图了解语法。

编辑1

我正在使用" go build"来构建项目。命令并从" app"执行它上面显示的目录。

$ GOROOT = / usr / local / go $ GOPATH = / Users / {username} / go

我还更新了目录结构以集成$ GOPATH

2 个答案:

答案 0 :(得分:0)

使用

检查程序在运行时的工作目录
dir, _ := os.Getwd()
fmt.Println(dir)

然后您可以使用它来获取模板的正确路径

template.Must(template.ParseFiles(filepath.Join(dir, "templates", "mytemplate.html")))

对于生产用途,您可以从配置文件或环境中获取dir的val,

参考:https://golang.org/pkg/os/#Getwd

编辑:运行程序时,请确保使用终端中的cd在正确的目录中

答案 1 :(得分:-1)

试试这个,

template.Must(template.New("mytemplate.html").ParseFiles("templates/mytemplate.html"))