html/template:模式与绝对路径不匹配任何文件



我有一个这样的全局常量。

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后,我可以从任何地方调用我的程序。

最新更新