मैं Yesod
यसोड वेबपृष्ठ पर प्रलेखित पुस्तक उदाहरणों की कोशिश कर रहा हूं। उदाहरणों में से एक Chat application embedded in Wiki के लिए है। जब मैं GHCi में यह कोशिश (जो विकी उदाहरण कोड शामिल Wiki.hs
से Chat
मॉड्यूल लोड हो रहा है), मैं Chat.hs के लिए नीचे दिए गए त्रुटि मिलती है:कुछ यसोड उदाहरणों की कोशिश करते समय त्रुटि संकलित करें
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
का उपयोग कर रहा हूं।
अद्यतन:
Hammar के सुझाव निम्नलिखित फिक्स्ड। मैंने Chat.hs
में दो बदलाव किए। rawJS के लिए
जोड़ें इंपोर्ट स्टेटमेंट:
import Text.Julius (rawJS)
ट्रैक नीचे सभी
Chat.hs
मेंjulius whamlet
भीतर # {} ब्लॉक के उदाहरण हैं, और उन्हें{# rawJS ...}
के साथ बदलेंvar output = document.getElementById("#{rawJS output}");
var input = document.getElementById("#{rawJS input}");
धन्यवाद, @hammar। वह बिल्कुल समस्या थी। जूलियस व्हामलेट के अंदर हर # {} ब्लॉक को ट्रैक करने के बाद अब इसे फिक्स्ड किया गया, और इसे कच्चेजेएस के साथ बदल दिया गया। – Sal