英文:
Go Template.ParseFiles and filepath.Join
问题
我正在尝试从目录中加载一个HTML文件,但是出现了错误"打开模板:没有这个文件或目录"。
我的目录结构如下:
/Users/{username}/go/src/app
main.go
/Users/{username}/go/src/app/templates
mytemplate.html
错误出现在下面这行代码:
template.Must(template.ParseFiles(filepath.Join("templates", "mytemplate.html")))
我是Go语言的新手,只是试着熟悉一下语法。
编辑1:
我正在使用"go build"命令构建项目,并在上面显示的"app"目录中执行它。
$GOROOT = /usr/local/go
$GOPATH = /Users/{username}/go
我还更新了目录结构以整合$GOPATH。
英文:
I am trying to load an html file from a directory and I am getting the error "open templates: no such file or directory"
My directory structure is below
/Users/{username}/go/src/app
main.go
/Users/{username}/go/src/app/templates
mytemplate.html
The error is coming from the line below
template.Must(template.ParseFiles(filepath.Join("templates", "mytemplate.html")))
I am new to go and just trying to get a feel for the syntax.
EDIT 1
I am building the project using the "go build" command and executing it out of the "app" directory shown above.
$GOROOT = /usr/local/go
$GOPATH = /Users/{username}/go
I also updated the directory structure to integrate the $GOPATH
答案1
得分: 1
请检查你的程序在运行时的工作目录:
dir, _ := os.Getwd()
fmt.Println(dir)
然后你可以使用这个目录来获取模板的正确路径:
template.Must(template.ParseFiles(filepath.Join(dir, "templates", "mytemplate.html")))
对于生产环境,你可以从配置文件或环境中获取dir
的值。
参考:https://golang.org/pkg/os/#Getwd
编辑:在运行程序时,请确保你在终端中使用cd
命令进入正确的目录。
英文:
Check the working directory that your program has at runtime with
dir, _ := os.Getwd()
fmt.Println(dir)
Then you can use that to get the right path for the templates
template.Must(template.ParseFiles(filepath.Join(dir, "templates", "mytemplate.html")))
For production use you could get the val of dir
fro a config file or the environment,
ref : https://golang.org/pkg/os/#Getwd
EDIT: When you run the program make sure you are in the correct directory using cd
in your terminal
答案2
得分: -1
请尝试这样做:
template.Must(template.New("mytemplate.html").ParseFiles("templates/mytemplate.html"))
英文:
Try this,
template.Must(template.New("mytemplate.html").ParseFiles("templates/mytemplate.html"))
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论