为什么我不能让IEx.pry在Windows上工作?

时间:2017-01-09 02:45:49

标签: elixir

我正在尝试使用以下代码示例来使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:

1 个答案:

答案 0 :(得分:3)

假设模块代码位于"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将创建新包。要在IEx.pry中启用mix支持,应在mix之前运行iex -S个任务:

iex -S mix # for just iex in mix environment

或:

iex -S mix phoenix.server

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

旁注:require IEx之后的分号是多余的并且是代码气味。