如何有效地阅读Yesod错误消息?

时间:2016-07-08 06:15:31

标签: haskell yesod shakespeare-text

(新手警报)

鉴于以下错误消息,找到错误来源的最快方法是什么:

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...

我正在使用一个简单的脚手架网站(没有数据库)并故意弄乱homepage.julius。在这个特定的实例中,我确切地知道错误是什么,但是如何通过查看错误消息才能知道?

1 个答案:

答案 0 :(得分:2)

在仔细阅读http://hackage.haskell.org/package/shakespeare-2.0.8/docs/Text-Julius.html后,您似乎试图在需要javascript的内容中嵌入一个纯字符串。

通常会阻止这样做,以便当您尝试仅显示他们提供的字符串时,有人无法将错误代码注入页面。所以只需要调用rawJS就可以嵌入它?或者您可能正在使用错误的插值类型来提供您提供的变量(@,^或#)。 Yesod特别关注这一点。

这只是一个猜测因为我不使用julius。