您好,我是 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/