【问题标题】:Why can't I get IEx.pry to work on Windows?为什么我不能让 IEx.pry 在 Windows 上工作?
【发布时间】:2017-01-10 00:31:48
【问题描述】:

我正在尝试使用以下代码示例使 IEx.pry 工作:

require IEx;

defmodule Example do
  def double_sum(x, y) do
    IEx.pry
    hard_work(x, y)
  end

end

Example.double_sum(1, 2)

当我运行它时,我收到以下错误:

Cannot pry #PID<0.106.0> at lib/example.ex:5. Is an IEx shell running? If you are Windows, you may need to start IEx with the --werl flag.

作为回应,我使用 --werl 启动了 iex,它打开了 erlang shell。

在 erlang shell 中,我尝试更改目录以便启动文件。我通过输入:

cd(c:/Users/william/Desktop/example)

我收到以下错误:

(SyntaxError) iex:1: keyword argument must be followed by space after: c:

【问题讨论】:

  • 对于最后一个问题,需要将路径包裹在一个字符串中:cd("c:/Users/william/Desktop/example").

标签: elixir


【解决方案1】:

假设模块代码位于"c:/Users/william/Desktop/example.ex",可能会进入iex并从那里强制编译:

iex> c "c:/Users/william/Desktop/example.ex"

Request to pry #PID<0.89.0> at /tmp/a.ex:5

    defmodule Example do
      def double_sum(x, y) do
        IEx.pry
        x + y
      end

Allow? [Yn] y

Interactive Elixir (1.5.0-dev) - press Ctrl+C to exit (type h() ENTER for help)
pry(1)> 

一旦按下"y",就会输入pry 提示符。


另一种选择是使用mix 来管理源代码,即使是这样简单的源代码。 mix new 将创建新包。要在mix 中启用IEx.pry 支持,应该运行带有iex -S 前缀的mix 任务:

iex -S mix # for just iex in mix environment

或:

iex -S mix phoenix.server

在 phoenix 应用程序中启用 IEx.pry 支持。

旁注:require IEx 之后的分号是多余的,是代码异味。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    相关资源
    最近更新 更多