3

こんにちは、私は yesod の初心者で、このチュートリアルに従おうとしていますが、アプリを開発しようとすると、次のエラーが表示されます。

ministeam-0.0.0... のビルド

Handler/AuthTut.hs:81:0: エラー: 無効な前処理ディレクティブ #メッセージ

cabal-dev: ユーザー エラー (警告: /home/nock/.cabal/bin/fake-ghc-cabal-dev のバージョンを判別できません: "== GHC 引数: 開始 ==\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}
|]

ご清聴ありがとうございました!

4

2 に答える 2

4

CPP (C プリプロセッサ) 言語拡張機能が有効になっていると思います。その場合、Haskell ファイル内のハッシュで始まる行はすべて CPP ディレクティブとして解釈されます。#message は無効なディレクティブであるため、エラー メッセージが表示されます。

外部の Lucius テンプレートに切り替えて、widgetFile を使用することをお勧めします。これには、開発中に CSS を自動再生成できるという追加の利点があります。

于 2012-07-16T04:49:09.000 に答える
0

チュートリアルからいくつかのコードをコピーしたときに、いくつかの行をインデントするのを忘れていたことを発見しました! とにかくありがとう!

于 2012-08-03T22:40:23.373 に答える