当您运行类似的服务器MIX_ENV=prod mix phx.server
,然后在连接到同一服务器的另一个屏幕上尝试运行附加的混合环境 iex 会话iex -S mix
时,您会收到错误并关闭并抱怨类似Failed to start Ranch listener VukWeb.Endpoint.HTTP in :ranch_tcp:listen([port: 4000]) for reason :eaddrinuse (address already in use)
当服务器在连接到同一数据库的单独屏幕中运行时,有没有办法运行 iex 会话?我很困惑为什么iex -S mix
还要尝试连接到外部端口,因为 iex 会话应该没有服务器运行,也不需要外部端口来加载混合环境?
我知道您可以使用类似的 iex 会话运行服务器MIX_ENV=prod iex -S mix phx.server
,但我的理解是,这既不是性能的理想选择,也不是在处理请求时让您的 iex 会话被用户日志流中断(这就是我们)现在正在做)。我也尝试像这样切换端口,MIX_ENV=prod PORT=4040 iex -S mix
但标志似乎被忽略了,因为投诉返回与端口 4000 的引用相同。我想知道是否可能有一些硬编码导致环境变量被忽略,如果像这样撤消这种硬编码并将其切换到不同的端口是正确的方法,即使该端口未被非服务器混合环境使用。
如果有人对如何同时获得 iex 会话和服务运行有提示 - 或者对工作流程有不同的建议,使这种愿望变得不必要 - 很想听听!
谢谢