为了账号安全,请及时绑定邮箱和手机立即绑定

template.Execute() 与 template.ExecuteTemplate()

template.Execute() 与 template.ExecuteTemplate()

Go
ABOUTYOU 2022-10-24 09:24:23
以下代码生成错误: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工作正常。


查看完整回答
反对 回复 2022-10-24
  • 1 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信