3

嗨,我对 yesod 很陌生,我正在尝试遵循本教程,但是当我尝试开发应用程序时,它给了我这个错误:

构建 ministeam-0.0.0...

处理程序/AuthTut.hs:81:0:错误:无效的预处理指令#message

cabal-dev:用户错误(警告:无法确定 /home/nock/.cabal/bin/fake-ghc-cabal-dev 的版本:“== GHC 参数:开始 ==\n--numeric-version\n= = GHC 参数:End ==\n" /usr/bin/ar: dist/build/Handler/AuthTut.o: 没有这样的文件或目录) yesod: readProcess: cabal-dev "buildopts" (exit 1): failed

这部分代码似乎不正确(见下文)。实际上我不明白他是如何在这部分代码中使用“toWidget”函数的。我认为缺少 Lucius 模块的导入,并将其添加到教程的导入列表中,但错误仍然存​​在。

defaultLayout inside = do
    mmsg <- getMessage
    pc <- widgetToPageContent $ do
                toWidget [lucius|
body {
    width: 760px;
    margin: 1em auto;
    font-family: sans-serif;
}
#message{
    color: #900;
}
|]      

            inside

hamletToRepHtml [hamlet|
$doctype 5
<html>
    <head>
        <title>#{pageTitle pc}
        ^{pageHead pc}
    <body>
        $maybe msg <- mmsg
            <div #message>#{msg}
        ^{pageBody pc}
|]

提前感谢您的关注!

4

2 回答 2

4

我猜你启用了 CPP(C 预处理器)语言扩展。在这种情况下,您的 Haskell 文件中以散列开头的任何行都将被解释为 CPP 指令。由于#message 是无效指令,您会收到一条错误消息。

我建议切换到外部 Lucius 模板并使用 widgetFile。这将具有额外的优势,即能够在开发过程中自动重新生成 CSS。

于 2012-07-16T04:49:09.000 回答
0

我发现当我从教程中复制一些代码时,我忘记了缩进一些行!不管怎么说,还是要谢谢你!

于 2012-08-03T22:40:23.373 回答