Я пытаюсь использовать Yesod
примеры книг, описанные на веб-странице Yesod. Один из примеров - для Chat application embedded in Wiki. Когда я пытаюсь его в GHCI (загрузка Chat
модуля из Wiki.hs
, который содержит Wiki пример коду), я получаю ошибку ниже для Chat.hs:Ошибка компиляции при попытке некоторых примеров Yesod
Chat.hs:122:34:
Could not deduce (Text.Julius.ToJavascript Text)
arising from a use of `Text.Julius.toJavascript'
from the context (YesodChat master)
bound by the type signature for
chatWidget :: YesodChat master =>
(Route Chat -> Route master) -> GWidget sub master()
at Chat.hs:(81,15)-(83,35)
Possible fix:
add an instance declaration for (Text.Julius.ToJavascript Text)
In the first argument of `Text.Julius.Javascript', namely
`Text.Julius.toJavascript output'
In the expression:
Text.Julius.Javascript (Text.Julius.toJavascript output)
In the first argument of `Data.Monoid.mconcat', namely
`[Text.Julius.Javascript
((Data.Text.Lazy.Builder.fromText . Text.Shakespeare.pack')
"\
\// Set up the receiving end\
\var output = document.getElementById(\""),
Text.Julius.Javascript (Text.Julius.toJavascript output),
Text.Julius.Javascript
((Data.Text.Lazy.Builder.fromText . Text.Shakespeare.pack')
"\");\
\var src = new EventSource(\""),
Text.Julius.Javascript
(Data.Text.Lazy.Builder.fromText
(_render_a3Yr (toMaster ReceiveR) [])),
....]'
Я не очень хорошо знаком с библиотеками Йесода еще. Таким образом, я столкнулся с вышеупомянутой ошибкой - я видел эту ошибку и в других примерах Yesod, где вызывается функция toWidget
. Таким образом, это похоже на функцию toWidget
. Я буду признателен за помощь в устранении вышеуказанной ошибки.
Я использую ghc 7.6.1
с yesod 1.1.4.1
.
Update:
Fixed следующее предложение Хаммар в. Я сделал два изменения в Chat.hs
. Заявление
Добавить импорт для rawJS:
import Text.Julius (rawJS)
выследить все экземпляры # {} блоки в
julius whamlet
вChat.hs
, и заменить их{# rawJS ...}
var output = document.getElementById("#{rawJS output}");
var input = document.getElementById("#{rawJS input}");
спасибо, @hammar. Это была проблема. Исправлено, после того как я отследил каждый блок # {} внутри julius whamlet и заменил его на rawJS. – Sal