以下代码生成错误:panic: template: body: "body" is an incomplete or empty template//go:embed resources/*var res embed.FSfunc main() { root, _ := fs.Sub(res, "resources") t, err := template.New("body").ParseFS(root, "home.html") assert(err) assert(t.Execute(os.Stdout, nil))}模板文件resources/home.html非常简单:{{define "body"}}Hello World!{{end}}如果我将 main() 的最后一行更改为t.ExecuteTemplate(os.Stdout, "body", nil),问题就消失了。从库源代码中,我注意到错误是因为:func (t *Template) execute(wr io.Writer, data interface{}) (err error) { ... ... if t.Tree == nil || t.Root == nil { state.errorf("%q is an incomplete or empty template", t.Name()) } ... ...}但是为什么 t.Tree或者t.Root是nil?我的版本是:go version go1.17.5 linux/amd64
1 回答
三国纷争
TA贡献1804条经验 获得超7个赞
我发现了问题。VSCode 自动text/template
为我导入。此包将无法正确解析{{define "..."}}
指令。
使用html/template
工作正常。
- 1 回答
- 0 关注
- 163 浏览
添加回答
举报
0/150
提交
取消