2012-07-15 120 views
3

嗨的工作奇怪的錯誤,我很新的耶索德,我試圖按照此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} 
|] 

在此先感謝您的關注!

回答

0

我發現,當我從教程中複製了一些代碼時,我忘記了縮進一些行!不管怎麼說,還是要謝謝你!

4

我猜你已經啓用了CPP(C預處理器)語言擴展。在這種情況下,Haskell文件中以散列開頭的任何行將被解釋爲CPP定向。而且,由於#message是一個無效的指令,您會收到一條錯誤消息。

我建議切換到外部Lucius模板並使用widgetFile。這將具有在開發過程中獲得自動CSS再生的額外優勢。

+0

感謝您的回答,但我發現我的問題是一個身份錯誤u.u新手的東西!不管怎麼說,還是要謝謝你! – Nocturn 2012-08-03 22:39:05

+0

有什麼辦法可以禁用某些文件中的CPP語言擴展嗎? – 2013-06-26 01:16:25

+0

我認爲你可以做{ - #LANGUAGE NoCPP# - },但我沒有嘗試過。 – 2013-06-26 04:50:53