我有这样的全局常量。
const TemplateDir string = "/home/joe/go/src/proj/template/"
然后,在我的代码中,我称之为。
template.ParseGlob(filepath.Join(TemplateDir, "*.tmpl"))
我知道filepath.Join(TemplateDir, "*.tmpl")
会产生/home/joe/go/src/proj/template/*.tmpl
。
这一切都很好。但是,当我尝试从proj
之外的目录运行我的可执行文件时,我收到此错误。
html/template: pattern matches no files: `template/*.tmpl`
如果我传入绝对路径,我不知道为什么我会收到错误。有什么想法吗?
更新
我忘了提到我通过$ PATH变量调用我的程序。也就是说,我没有在任何地方执行./proj
。我只是从我的主目录中调用proj
。
答案 0 :(得分:1)
所以,事实证明我使用$PATH
变量调用的版本已经过时了!这就是发生的事情。
src/proj$ go build
src/proj$ ./proj
这样可以正常工作,但这不起作用。
~/$ proj
那是因为我忘记了go install
我的包裹!在我的包目录中执行go install
后,我可以从任何地方调用我的程序。