haskell - Yesod:与 Lucius 合作时出现奇怪的错误

标签 haskell yesod haskell-platform

您好,我是 yesod 的新手,我正在努力学习 Tutorial但是当我尝试开发应用程序时,它给了我这个错误:

Building ministeam-0.0.0...

Handler/AuthTut.hs:81:0: error: invalid preprocessing directive #message

cabal-dev: user error (Warning: cannot determine version of /home/nock/.cabal/bin/fake-ghc-cabal-dev : "== GHC Arguments: Start ==\n--numeric-version\n== GHC Arguments: End ==\n" /usr/bin/ar: dist/build/Handler/AuthTut.o: No such file or directory ) 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}
|]

提前感谢您的关注!

最佳答案

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

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

关于haskell - Yesod:与 Lucius 合作时出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11496489/

相关文章:

Haskell:获取 Snoc 列表中的第 N 个元素

haskell - Yesod 条件子网站

postgresql - 如何在 Yesod 中使用 UUID?

Haskell 平台与自制软件

haskell - 为什么 (pure [] 3) 的类型是 "[a]"?

haskell - Haskell 模板 - 静态断言

haskell - 独立的 Haskell Executable 可以在具有相同操作系统的机器上运行吗?

dictionary - Data.Map - 为什么有 `takeWhileAntitone` 但没有 `takeWhile`?

sqlite - 持久性的新手问题