3

我认为@{SomeRouteR}应该在.julius文件中工作,如下所述:

https://www.yesodweb.com/book/shakespearean-templates#shakespearean-templates_julius_javascript

当我第一次在我的处理程序中使用它时,一切正常:

toWidget [julius|   
                        $("#examplespan").click(function(){                                                                               
                            $.ajax({                                                                                                      
                                url: @{ExampleR},                                                                                 
                                type: "POST",   
                                ...

                        |]

但现在我已经改变了我的处理程序,让它像这样工作:

$(widgetFile "example")

我在以下代码中添加了此代码example.julius

                        $("#examplespan").click(function(){                                                                               
                            $.ajax({                                                                                                      
                                url: @{ExampleR},                                                                                 
                                type: "POST",   
                                ...

我现在得到错误:

[Error#yesod-core] expected EUrl but got Nothing for: DerefIdent (Ident "ExampleR")
CallStack (from HasCallStack):
  error, called at ./Text/Shakespeare.hs:441:27 in shakespeare-2.0.20-3iMfZ8A5DXH3Twhu6IoWNc:Text.Shakespeare @(yesod-core-1.6.9-7g4SwkDmJJ261rdNBKrLzX:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:662:5)

我究竟做错了什么?

4

1 回答 1

1

这里可能没有任何问题。我将复制我之前为我的公司写的故障排除说明。


来自模板文件的 DerefBranch 错误

我对模板 ( ) 进行了更改,{*.hamlet,*.cassius,*.lucius,*.julius}但出现如下错误:

\"rawJS\")) (DerefBranch (DerefIdent (Ident \"tshow\")) (DerefIdent (Ident
\"errors\")))\nCallStack (from HasCallStack):\n error

这是 [我相信] 模板 Haskell 和我们编译的方式的问题。也许是一些 GHC 标志,也许是 GHCi 本身,我不确定。

您可以通过触摸引用模板的文件来解决此问题,例如,如果您的模板文件是templates/foo.julius,并且您$(widgetFile "foo")Handler.Foo模块中引用它,然后触摸(或从编辑器中保存)该src/Handler/Foo.hs文件并重新加载 GHCi。

于 2020-01-19T12:24:37.413 回答