Как эффективно читать сообщения об ошибках 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 на него, и он должен вставлять? Или, возможно, вы используете неправильный тип интерполяции для указанной переменной (@,^ или #). Йесод особенно об этом.
Это всего лишь предположение, так как я не использую Юлия.