Yesod:与Lucius合作的奇怪错误

时间:2012-07-15 23:26:07

标签: haskell yesod haskell-platform

您好我是yesod的新手,我正在尝试关注此Tutorial但是当我尝试开发应用时,它给了我这个错误:

  

构建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”(退出1):失败

看来这部分代码不对(见下文)。实际上我不明白他是如何在代码的那部分使用“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}
|]

提前感谢您的关注!

2 个答案:

答案 0 :(得分:4)

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

我建议切换到外部Lucius模板并使用widgetFile。这将具有在开发期间能够获得自动CSS再生的额外优势。

答案 1 :(得分:0)

我发现当我从教程中复制一些代码时,我忘了缩进一些行!不管怎样,谢谢!