如何阻止Go 1.11构建quicktemplate .qtpl文件?

时间:2018-09-24 06:35:36

标签: go

我有一些使用quicktemplate的Go软件包。 Quicktemplate使用.qtpl CLI应用程序将扩展名为.qtpl.go的模板文件编译为带有qtc扩展名的Go文件。在1.11之前的Go版本中,在Go软件包中包含.qtpl文件不是问题,因为.qtpl文件将被编译器忽略。但是,Go 1.11似乎可以处理.qtpl文件,从而导致编译失败。

此处提供了一个适用于Go 1.3-1.10但不适用于1.11的示例。

程序包目录包含:

  • timeseries_page.qtpl模板文件
  • timeseries_page.qtpl.go模板文件已使用qtc
  • 编译为Go

以前,仅以.go结尾的文件将被编译,并且一切正常。在1.11中,解析.qtpl文件时抛出了错误,该错误不是Go编译器要构建的。

这是一个使用该软件包的最小Go程序,它将无法在Go 1.11中构建,但可以在1.10上使用。

package main

import (
    "github.com/grokify/gocharts/charts/c3"
)

func main() {
    _ = c3.C3Chart{}
}

以下是显示timeseries_page.qtpl文件的错误:

$ go build main.go
# github.com/grokify/gocharts/charts/c3
timeseries_page.qtpl:42: undefined: TimeseriesHTML
timeseries_page.qtpl:48: undefined: TimeseriesHTML

TimeseriesHTML是在该模板文件中调用并由timeseries_js.qtpl.go file中的另一个quicktemplate文件构建的函数。

以下内容会遇到相同的结果和输出:

$ go run main.go
$ go test main.go

是否有办法恢复以前的Go行为,或在构建过程中忽略.qtpl文件?

0 个答案:

没有答案