Phoenix / Elixir / Ejabberd - 响应已发送错误

时间:2015-09-08 02:21:25

标签: ejabberd elixir phoenix-framework

我正在按照本指南将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%>

我无法找到任何有关此事的想法?

感谢。如果您需要更多信息,请与我们联系。

3 个答案:

答案 0 :(得分:12)

删除plug :action将解决问题。看起来现在默认调用它,因此该行会导致重复错误:

https://github.com/phoenixframework/phoenix/issues/888

答案 1 :(得分:1)

博客文章有渲染问题(现已修复)。 <之间没有空格。和%。

您可以从Gist下载实际的源代码:https://gist.github.com/mremond/383666d563025e86adfe#file-index-html-eex

答案 2 :(得分:1)

就我而言,我正在通过路由器中的身份验证功能进行管道传输。该 auth 函数正在返回响应,但并没有停止。一旦我在 conn 链的末尾添加了一个 |> halt(),我就可以开始了。

只是想听听这个,以防我或其他人需要快速提醒。