错误:模板:“...”是一个不完整或空的模板

问题描述 投票:15回答:1

我正在尝试将FuncMap添加到我的模板中,但是我收到以下错误:

模板:“foo”是一个不完整或空的模板

在我使用FuncMap之前解析模板工作得很好,所以我不确定为什么它现在会抛出一个错误。

这是我的代码:

funcMap := template.FuncMap{
    "IntToUSD": func(num int) string {
        return decimal.New(int64(num), 2).String()
    },
}

// ...

tmpl, err := template.New(t.file).Funcs(funcMap).ParseFiles(t.files()...)
if err != nil {
    // ...
}

t.files()只返回一段文件路径的字符串。

谁知道怎么了?

go
1个回答
27
投票

确保传递给template.New的参数是传递给ParseFiles的列表中某个文件的基本名称。

一种选择是

files := t.files()
if len(files) > 0 {
    name := path.Base(files[0])
    tmpl, err := template.New(name).Funcs(funcMap).ParseFiles(files...)

ParseFiles documentation

由于ParseFiles创建的模板由参数文件的基本名称命名,因此t通常应该具有文件(基本)名称之一的名称。

© www.soinside.com 2019 - 2024. All rights reserved.