Yesod web sayfasında belgelenen Yesod
kitap örneklerini deniyorum. Örneklerden biri Chat application embedded in Wiki içindir. Ben (Wiki örneği kodunu içeren Wiki.hs
den Chat
modülü yüklenirken) GHCi bunu çalıştığımda, Chat.hs için aşağıdaki hatayı alıyorum:Bazı Yesod örneklerini çalışırken hata derleme
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) [])),
....]'
Henüz Yesod'dan kütüphaneleri ile çok aşina değilim. Yani, yukarıdaki hataya göre stumped - Bu hatayı diğer Yesod örneklerinde de gördüm, burada toWidget
işlevi çağrıldı. Yani, toWidget
işlevi ile ilgili gibi görünüyor. Yukarıdaki hatayı düzeltmedeki yardımı takdir edeceğim.
yesod 1.1.4.1
ile ghc 7.6.1
kullanıyorum.
Güncelleme:
Hammar önerisi aşağıdaki düzeltildi. Chat.hs
'da iki değişiklik yaptım. rawJS için
Ekleme ithalat beyanı:
import Text.Julius (rawJS)
Parça aşağı tüm
Chat.hs
içindejulius whamlet
içinde # {} blokları örnekleri ve{# rawJS ...}
bunların yerinevar output = document.getElementById("#{rawJS output}");
yılında
Teşekkür ederim, @hammar. Tam olarak sorun buydu. Şimdi julius whamlet'in içindeki her # {} bloğu takip ettikten ve rawJS ile değiştirdikten sonra düzeltildi. – Sal