4

(初心者注意)

次のエラー メッセージが表示された場合、エラーの原因を突き止める最も簡単な方法は次のとおりです。

08/Jul/2016:11:39:01 +0530 [Error#yesod-core] expected EPlain but got Nothing for: DerefBranch (DerefIdent (Ident "show")) (DerefString "abcdef") @(yesod_3MCr4WfhviiELXmo3fAaXL:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:625:5)
GET /
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
  Status: 500 Internal Server Error 0.054158s

Handler/Home.hs:38:11:
    No instance for (Text.Julius.ToJavascript String)
      arising from a use of ‘Text.Julius.toJavascript’
    In the second argument of ‘(GHC.Base..)’, namely
      ‘Text.Julius.toJavascript’
    In the second argument of ‘(GHC.Base..)’, namely
      ‘(Text.Julius.unJavascript GHC.Base.. Text.Julius.toJavascript)’
    In the expression:
      Text.Shakespeare.EPlain
      GHC.Base..
        (Text.Julius.unJavascript GHC.Base.. Text.Julius.toJavascript)
Build failure, pausing...

私は単純な足場サイト (DB なし) で作業しており、意図的にhomepage.julius. この特定の例では、私はエラーが何であるかを正確に知っていますが、エラーメッセージを見るだけでどうやって知ることができますか?

4

1 に答える 1

2

http://hackage.haskell.org/package/shakespeare-2.0.8/docs/Text-Julius.htmlを熟読した後、javascript が必要なものにプレーンな文字列を埋め込もうとしているようです。

これは通常、提供された文字列を表示しようとしているときに、誰かが悪いコードをページに挿入できないようにするために防止されます。その上で rawJS を呼び出すだけで、埋め込む必要がありますか? または、指定する変数 (@、^、または #) に対して間違った補間タイプを使用している可能性があります。イェソドはそこにこだわります。

私はジュリアスを使用していないので、これは単なる推測です。

于 2016-07-08T16:24:34.263 に答える