以下代碼生成錯誤: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條經(jīng)驗 獲得超7個贊
我發(fā)現(xiàn)了問題。VSCode 自動text/template
為我導(dǎo)入。此包將無法正確解析{{define "..."}}
指令。
使用html/template
工作正常。
- 1 回答
- 0 關(guān)注
- 204 瀏覽
添加回答
舉報
0/150
提交
取消