最近更新后,我的 Phoenix 项目遇到了一些奇怪的行为。
基本上,每次重新启动应用程序时我都必须不断更改端口号。我什至尝试通过 PID 终止所述端口上的进程,但无济于事。
尝试在“占用”端口上运行
mix phx.server
会产生以下错误:
Could not start application project: Project.Application.start(:normal, []) returned an error: shutdown: failed to start child: ProjectWeb.Endpoint
** (EXIT) shutdown: failed to start child: {:ranch_listener_sup, ProjectWeb.Endpoint.HTTP}
** (EXIT) shutdown: failed to start child: :ranch_acceptors_sup
** (EXIT) {:listen_error, ProjectWeb.Endpoint.HTTP, :eaddrinuse}
这在我的机器上从来都不是问题(大约 4 个月)。关于为什么会发生这种情况或者我如何尝试永久解决此问题而无需每次都编辑端口号的任何想法?
(MacOS)
您可能正在激活终端并让旧进程仍在运行。
mix phx.server
总是创建一个称为“beam”的进程。在重新启动/启动之前,请尝试执行 pkill beam
来终止旧的。
建议在开发模式下以
iex -S mix phx.server
开头,以便您在应用控制台中键入 recompile
以避免重新启动。另请检查您的实时重新加载是否正常工作,这样您就不必重新启动它。