英文:
html/template: pattern matches no files even with absolute path
问题
我有一个全局常量,像这样。
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
。
英文:
I have a global constant like this.
const TemplateDir string = "/home/joe/go/src/proj/template/"
Then, later in my code I call this.
template.ParseGlob(filepath.Join(TemplateDir, "*.tmpl"))
I know that filepath.Join(TemplateDir, "*.tmpl")
produces /home/joe/go/src/proj/template/*.tmpl
.
This all compiles fine. However, when I try to run my executable from a directory outside of proj
, I get this error.
html/template: pattern matches no files: `template/*.tmpl`
I'm not sure why I'm getting that error if I passed in an absolute path. Any ideas?
Update
I forgot to mention that I'm calling my program through the $PATH variable. That is, I'm not executing ./proj
anywhere. I'm just calling proj
from my home directory.
答案1
得分: 1
所以,事实证明我使用$PATH
变量调用的版本已经过时了!以下是发生的情况。
src/proj$ go build
src/proj$ ./proj
这样做是可以正常工作的,但是这样做是行不通的。
~/$ proj
那是因为我忘记了在我的包目录中执行go install
!在我的包目录中执行了go install
之后,我就可以在任何地方调用我的程序了。
英文:
So, it turns out that the version I was calling using my $PATH
variable was outdated! Here's what happened.
src/proj$ go build
src/proj$ ./proj
That would work fine, but this wouldn't work.
~/$ proj
That's because I forgot to go install
my package! After doing go install
in my package directory, I could call my program from anywhere.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论