(新手警报)
鉴于以下错误消息,找到错误来源的最快方法是什么:
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
。在这个特定的实例中,我确切地知道错误是什么,但是如何通过查看错误消息才能知道?
答案 0 :(得分:2)
在仔细阅读http://hackage.haskell.org/package/shakespeare-2.0.8/docs/Text-Julius.html后,您似乎试图在需要javascript的内容中嵌入一个纯字符串。
通常会阻止这样做,以便当您尝试仅显示他们提供的字符串时,有人无法将错误代码注入页面。所以只需要调用rawJS就可以嵌入它?或者您可能正在使用错误的插值类型来提供您提供的变量(@,^或#)。 Yesod特别关注这一点。
这只是一个猜测因为我不使用julius。