haskell - 如何有效阅读Yesod错误信息?

标签 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。在这个特定的实例中,我确切地知道错误是什么,但是如何仅通过查看错误消息就知道错误是什么?

最佳答案

仔细阅读后http://hackage.haskell.org/package/shakespeare-2.0.8/docs/Text-Julius.html ,看起来您正在尝试将纯字符串嵌入到需要 JavaScript 的内容中。

这通常是可以防止的,这样当您尝试仅显示他们提供的字符串时,其他人就无法将错误代码注入(inject)到页面中。那么只要调用 rawJS 就可以嵌入了?或者,您可能对所提供的变量使用了错误的插值类型(@、^ 或 #)。 Yesod 对此很挑剔。

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

关于haskell - 如何有效阅读Yesod错误信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38260036/

相关文章:

templates - Yesod (hamlet) 模板中的注释语法是什么?

haskell - 在没有 monad 转换器的情况下避免使用 case 表达式阶梯

haskell - 由于类型错误,无法实现 Foldable 实例

haskell - Haskell 中的 zip 函数

database - 在 Yesod 脚手架站点初始化 SQLite 数据库

haskell - 在 Yesod 中显示动态生成的图像

haskell - 尝试时链接错误 "stack install yesod-bin"

haskell - 在 yesod (haskell) 中,如何加载纯 html 格式的文件(不是 hamlet)作为小部件?

haskell - 装箱和未装箱整数的内存布局?

haskell - 使用莎士比亚文本和外部文件