【问题标题】:Elixir phoenix debugging leads to interactive shell instead of pryElixir phoenix调试导致交互式shell而不是pry
【发布时间】:2018-07-09 14:29:19
【问题描述】:

我一直在尝试调试 phoenix 应用程序。
为此,我使用了以下说明:
- 设置断点:require IEx; IEx.pry
- 启动调试服务器:iex -S mix phx.server

问题出现在启动服务器时,上面的指令将我引导到 elixir 交互式 shell (iex(1)>) 并且不允许服务器运行,如果我手动执行代码,它会在 prys 中停止,但我每当请求被撬开时,就会跳到让服务器运行并停止。有什么解决办法吗?

我目前正在使用earlang 1.20、elixir 1.5 和phoenix 1.3

【问题讨论】:

  • 你在哪里添加IEx.pry
  • 我将 IEX.pry 放在控制器的一个函数中
  • iex -S mix phx.server 应该让你进入 iex 会话,但也应该在端口 4000(或任何你配置的)处启动服务器。运行后无法打开 localhost:4000?
  • 这正是问题所在,运行 iex -S mix phx.server localhost:4000 后没有打开@Dogbert
  • 你到底把IEx.pry放在哪里了?您确定您没有打开路由到带有断点的操作的页面吗?另外,请检查您是否打开了另一个使用 localhost:4000 的选项卡/浏览器,也许其他东西正在打开页面并导致中断。

标签: debugging elixir phoenix-framework elixir-iex


【解决方案1】:

iex -S mix phx.server 命令打开 IEx shell 是常见的行为。它在为 Phoenix 端点配置的端口上运行 Web 服务器,同时在各自的MIX_ENV 中运行。对于它执行的每个IEx.pry() 断点,它应该在命令行上提示你是否要在那里打开一个IEx shell。

检查您的服务器在哪个MIX_ENV 中运行,例如通过在 IEx shell 中键入以下内容:

Mix.env

然后在config/目录下的文件中找到配置。该行应如下所示:

config :nameofyourapp, Web.Endpoint,
  http: [port: 4000],

也许那里配置了 4000 以外的东西?或者可能是其他应用程序,甚至是您的 Web 应用程序之前启动的实例已经在该端口上侦听,因此禁止调试服务器绑定到该端口?在这种情况下,请关闭其他正在运行的mix phx.server 进程。

【讨论】:

    猜你喜欢
    • 2019-08-28
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多