2015-09-14 27 views
1

我試圖從一個目錄中加載HTML文件,我得到的錯誤「打開模板:沒有這樣的文件或目錄」轉到Template.ParseFiles和filepath.Join

我的目錄結構如下

/用戶/ {名} /去/ src目錄/應用 main.go

/Users/{用戶名} /去/ src目錄/應用/模板 mytemplate.html

錯誤來自行未來低於

template.Must(template.ParseFiles(filepath.Join("templates", "mytemplate.html"))) 

我是新來的,只是試圖感受語法。

編輯1

我建立使用「去打造」命令並執行它上面顯示的「應用程序」目錄的項目。

$ GOROOT =的/ usr /本地/去 $ GOPATH =/Users/{用戶名} /去

我也更新目錄結構,整合$ GOPATH

+0

你在哪裏運行你的程序f只讀存儲器?有關Go中相對路徑的信息,請參閱以下內容:https://stackoverflow.com/questions/17071286/how-can-i-open-files-using-relative-paths-in-go – HectorJ

+0

模板文件夾實際上是在應用程序下目錄。我更新了問題以清除它。 – Jake

+1

你是否在爲你的可執行文件使用'go run'或'go install'?請記住'go install'將二進制文件放在$ GOPATH/bin'文件夾中。 – SnoProblem

回答

-1

試試這個,

template.Must(template.New("mytemplate.html").ParseFiles("templates/mytemplate.html")) 
+4

請編輯更多信息。只有代碼和「試試這個」的答案是[灰心](http://meta.stackexchange.com/questions/196187/is-try-this-bad-practice),因爲它們不包含可搜索的內容,也不解釋爲什麼有人應該「嘗試這個」。 –

+0

我試過這個,但是我收到與原始發佈相同的錯誤。 – Jake

0

檢查工作目錄,你的程序有在運行時用

dir, _ := os.Getwd() 
fmt.Println(dir) 

然後你可以用它來得到正確的路徑爲模板

template.Must(template.ParseFiles(filepath.Join(dir, "templates", "mytemplate.html")))

供生產使用,你可以得到的dir瓦爾來回一個配置文件或環境,

裁判:https://golang.org/pkg/os/#Getwd

編輯:當你運行該程序,確保你在正確的目錄中使用cd在你的終端

+0

我試過了,它沒有工作。工作目錄返回「/Users/{username}/templates/mytemplate.html」,實際位置爲「/ Users/{username}/go/src/{projectname}/templates/mytemplate。html「 – Jake

+0

因此,根據上面的註釋你的工作目錄是不正確的,你如何運行你的程序? – LenW

+0

使用」去建立「,然後執行它出/ Users/{用戶名} /去/ src /應用程序目錄 – Jake