2

我正在尝试启动并运行莎士比亚模板;特别是 Text.Hamlet。我有$(shamletFile "HTML/index.hamlet")(见注释),当我编译文件时,我收到一个错误,告诉我文件不存在。因此,我尝试了各种文件路径组合,试图猜测拼接器正在使用哪个工作目录,但没有成功。

莎士比亚拼接在哪里寻找他们的文件?这是在某处记录的吗?


笔记

  1. 此路径相对于使用模板的源文件。
  2. 我没有使用完整的 Yesod 框架,只是模板引擎。
4

1 回答 1

1

shamletFile将标准FilePath作为参数,因此根据“当前本地目录”进行评估。模板 Haskell 评估期间的“当前” - 即编译阶段。正如@arrowd 所指出的,这通常是主项目目录。

请注意,如果您使用的是 Yesod,这将不再适用,因为在构建过程中会为每个莎士比亚文件yesod-bin添加templates/前缀(并且在那里进行硬编码)。

于 2016-08-24T17:30:26.903 回答