您好我是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}
|]
提前感谢您的关注!
答案 0 :(得分:4)
我猜你已经启用了CPP(C预处理器)语言扩展。在这种情况下,Haskell文件中以哈希开头的任何行都将被解释为CPP指向性。由于#message是一个无效的指令,因此会收到错误消息。
我建议切换到外部Lucius模板并使用widgetFile。这将具有在开发期间能够获得自动CSS再生的额外优势。
答案 1 :(得分:0)
我发现当我从教程中复制一些代码时,我忘了缩进一些行!不管怎样,谢谢!