我有一个这样的全局常量。
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
。
所以,事实证明我使用 $PATH
变量调用的版本已经过时了!事情是这样的。
src/proj$ go build
src/proj$ ./proj
那会很好,但这行不通。
~/$ proj
那是因为我忘了go install
我的包裹!在我的包目录中执行go install
后,我可以从任何地方调用我的程序。