Как эффективно читать сообщения об ошибках Yesod?

(оповещение новичка)

Учитывая следующее сообщение об ошибке, какой самый быстрый способ добраться до источника ошибки:

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 ответ

После просмотра http://hackage.haskell.org/package/shakespeare-2.0.8/docs/Text-Julius.html похоже, что вы пытаетесь встроить простую строку в то, что требует JavaScript.

Обычно это предотвращается, так что кто-то не может внедрить плохой код в страницу, когда вы пытаетесь просто отобразить строку, которую они предоставили. Так что просто вызовите rawJS на него, и он должен вставлять? Или, возможно, вы используете неправильный тип интерполяции для указанной переменной (@,^ или #). Йесод особенно об этом.

Это всего лишь предположение, так как я не использую Юлия.

Другие вопросы по тегам