当您已经在 iex 中时如何启动 Phoenix 服务器?

Posted

技术标签:

【中文标题】当您已经在 iex 中时如何启动 Phoenix 服务器?【英文标题】:How to start Phoenix server when you are already in iex? 【发布时间】:2021-08-08 05:06:18 【问题描述】:

我知道我们可以启动 iex -S mix phoenix.server。但是假设我已经在 iex -S mix 中。我该怎么做才能启动服务器?

谢谢。

【问题讨论】:

我会打开另一个终端,然后启动服务器。 【参考方案1】:

这可能不是一个很好的方法,但我想你只是在开发中这样做。但是一种方法是设置 same config option mix phx.server 设置然后重新启动您的端点(本示例将其停止并让应用程序主管重新启动它)。

iex> Application.put_env(:phoenix, :serve_endpoints, true)
:ok
iex> GenServer.stop(MyAppWeb.Endpoint)
:ok
[info] Running MyAppWeb.Endpoint with cowboy 2.9.0 at 0.0.0.0:4000 (http)

【讨论】:

唯一理解问题并直接以理解解决问题的答案!我测试了它并且它有效。谢谢@BrettBeatty。【参考方案2】:

iex -S mix phx.server 开始运行,然后iex 和您的应用程序将一起运行

【讨论】:

这不能回答问题。有时我已经在 iex 中设置了一些东西,我不想重新启动。也许我应该更清楚。【参考方案3】:

很遗憾地告诉你,这是不可能的。

请参阅此讨论以供参考:https://elixirforum.com/t/mix-task-run-deps-compile-dep-name-force-not-compiling/12114/4

我引用:

Mix 不打算从 iex 或应用程序内部调用。主要界面是 CLI,因此任务只能运行一次。

【讨论】:

我尝试了 Brett 的解决方案,它有效。如果您不同意,或认为它不完整,请告诉我们。感谢 Peaceful James 的努力回答。

以上是关于当您已经在 iex 中时如何启动 Phoenix 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

Elixir IEX在显示提示之前停止,并且不接受输入

使 elixir 应用程序在源代码更改时重新编译和重新加载

如何在不编译更改的文件的情况下运行`iex -S mix`?

当您将合约存储在映射中时,实际存储了啥?

电脑有些老,BIOS是phoenix-award的,电脑启动不了了,亟需解决

如何重新编译 Elixir 项目并从 iex 中重新加载它?