我正在開發一個Google App Engine Go應用程序,並且需要在我的一個包中使用一些HTML模板。當前文件的結構是:GAE Golang模板解析錯誤 - 「操作不允許」
GOPATH/github.com/NAME/PROJECT/
app/
app.go
app.yaml
package/
package.go
Templates/
Template.html
要包括包,我用:
進口 「github.com/NAME/PROJECT/package」
內package.go的,我嘗試解析以各種方式我Template.html文件:
//Template, err := template.ParseFiles("package/Templates/Template.html") //doesn't work - "The system cannot find the path specified."
//Template, err := template.ParseFiles("github.com/NAME/PROJECT/package/Templates/Template.html") //doesn't work - "The system cannot find the path specified."
//Template, err := template.ParseFiles("Templates/Template.html") //doesn't work - "The system cannot find the path specified."
//Template, err := template.ParseFiles("/Templates/Template.html") //doesn't work - "The system cannot find the path specified."
Template, err := template.ParseFiles("../package/Templates/Template.html") //works on desktop!
所以我採取在我的桌面測試環境工程的最後一個選項,上傳到AppEngine上,我得到的「不允許操作」一個新的錯誤..
如何使用上述的文件配置解析HTML模板,該模板既適用於App Engine,也適用於桌面?
...以下是使用go.rice將模板嵌入二進制文件的示例:https://github.com/drone/drone/blob/master/pkg/template/template.go#L34-L37 – elithrar
這在技術上是錯誤的。請參閱:https://cloud.google.com/appengine/docs/go/#Go_The_sandbox;閱讀文件是完全合法的。被禁止的是試圖讀取不屬於應用程序的文件。這個問題提供了一個場景,其中有一個'app /'目錄,但模板不是'app /'的子目錄!因此,應用程序無法訪問模板文件,因爲它們不屬於應用程序的一部分。 – dyoo