2016-08-12 69 views
2

我試圖讓莎士比亞模板啓動並運行;特別是Text.Hamlet。我有$(shamletFile "HTML/index.hamlet")(見注),當我編譯文件時,我得到一個錯誤,告訴我該文件不存在。所以我嘗試了各種文件路徑的組合,試圖猜測splice正在使用哪個工作目錄,但沒有成功。莎士比亞接頭在哪裏尋找他們的文件

莎士比亞接頭在哪裏尋找他們的文件?這是記錄在某處嗎?


NOTES

  1. 此路徑相對於使用所述模板的源文件。
  2. 我沒有使用完整的Yesod框架,只是模板引擎。
+0

AFAIR,它是相對於建築工具過程的工作目錄。也就是說,如果您在項目目錄中運行'cabal build'或'stack build',則所有模板路徑都將與此相關。 – arrowd

回答

1

shamletFile以標準FilePath作爲參數,因此根據「當前本地目錄」進行評估。模板Haskell評估期間的「當前」 - 即編譯階段。正如@arrowd指出的那樣,這通常是主要的項目目錄。

請注意,如果您使用的是Yesod,則不會再出現這種情況,因爲在構建yesod-bin期間,每個莎士比亞文件都會添加templates/前綴(並且在那裏進行硬編碼)。