Странная ошибка в журналах Phoenix: запуск MyApp.Endpoint завершен

Я получаю следующую ошибку в phoenix webapp, я развиваюсь. Это простое приложение с несколькими моделями и страницей, где все формы форм создаются в виде нескольких вкладок.

Я получаю следующую ошибку в журналах. Однако в конце браузера все работает нормально. Из журналов также я не могу понять, что не так, и как отладить это.

[error] #PID<0.1603.0> running MyApp.Endpoint terminated
Server: localhost:4000 (http)
Request: GET /
** (exit) an exception was raised:
    ** (Plug.Conn.AlreadySentError) the response was already sent
        (plug) lib/plug/conn.ex:428: Plug.Conn.resp/3
        (plug) lib/plug/conn.ex:415: Plug.Conn.send_resp/3
        (my_app) web/controllers/personal_info_controller.ex:1: MyApp.PersonalInfoController.phoenix_controller_pipeline/2
        (my_app) lib/phoenix/router.ex:265: MyApp.Router.dispatch/2
        (my_app) web/router.ex:1: MyApp.Router.do_call/2
        (my_app) lib/my_app/endpoint.ex:1: MyApp.Endpoint.phoenix_pipeline/1
        (my_app) lib/plug/debugger.ex:90: MyApp.Endpoint."call (overridable 3)"/2
        (my_app) lib/phoenix/endpoint/render_errors.ex:34: MyApp.Endpoint.call/2
        (plug) lib/plug/adapters/cowboy/handler.ex:15: Plug.Adapters.Cowboy.Handler.upgrade/4
        (cowboy) src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

Ответы

Ответ 1

Вы получаете эту ошибку при дублировании ответа - это часто случается, когда у вас есть подключаемый модуль, который будет отправлять ответ на некоторую ошибку (например, пользователь не входит в систему), а затем другой ответ отправляется из действия вашего контроллера.

Не видя своего кода, сложно сказать, где проблема. После отправки ответа вы можете использовать Plug.Conn.halt/1, чтобы предотвратить эту ошибку.

например.

conn
|> send_resp(404, "Post not found")
|> halt