我正在按照本指南将Ejabberd嵌入到Phoenix应用程序(https://blog.process-one.net/embedding-ejabberd-into-an-elixir-phoenix-web-application/)中,现在它正在运行时出现错误。
基本上,一切似乎都正常,直到我导航到“http://localhost:4000/ejabberd”,此时我收到以下错误:
[错误] #PID< 0.721.0>运行EjbrdTest.Endpoint终止服务器: localhost:4000(http)请求:GET / ejabberd **(退出)引发了异常: **(Plug.Conn.AlreadySentError)响应已经发送 (插件)lib / plug / conn.ex:428:Plug.Conn.resp / 3 (插件)lib / plug / conn.ex:415:Plug.Conn.send_resp / 3 (ejbrdTest)web / controllers / ejabberd_controller.ex:1:EjbrdTest.EjabberdController.phoenix_controller_pipeline / 2 (ejbrdTest)lib / phoenix / router.ex:265:EjbrdTest.Router.dispatch / 2 (ejbrdTest)web / router.ex:1:EjbrdTest.Router.do_call / 2 (ejbrdTest)lib / ejbrdTest / endpoint.ex:1:EjbrdTest.Endpoint.phoenix_pipeline / 1 (ejbrdTest)lib / plug / debugger.ex:90:EjbrdTest.Endpoint。“call(overridable 3)”/ 2 (ejbrdTest)lib / phoenix / endpoint / render_errors.ex:34:EjbrdTest.Endpoint.call/2 (插件)lib / plug / adapters / cowboy / handler.ex:15:Plug.Adapters.Cowboy.Handler.upgrade / 4 (牛仔)src / cowboy_protocol.erl:442 :: cowboy_protocol.execute / 4
而不是用户列表,我在jumbotron中看到了这一点:
在线用户:< %=对于用户< - @users do%> < %=用户%>
< %end%>
我无法找到任何有关此事的想法?
感谢。如果您需要更多信息,请与我们联系。
答案 0 :(得分:12)
删除plug :action
将解决问题。看起来现在默认调用它,因此该行会导致重复错误:
答案 1 :(得分:1)
博客文章有渲染问题(现已修复)。 <之间没有空格。和%。
您可以从Gist下载实际的源代码:https://gist.github.com/mremond/383666d563025e86adfe#file-index-html-eex
答案 2 :(得分:1)
就我而言,我正在通过路由器中的身份验证功能进行管道传输。该 auth 函数正在返回响应,但并没有停止。一旦我在 conn 链的末尾添加了一个 |> halt()
,我就可以开始了。
只是想听听这个,以防我或其他人需要快速提醒。