尝试使用IEx.pry
调试项目时,我发现需要使用--werl
标志。我会将任何有潜在解决方案的人推荐给:
Should --werl be made default?
我当前的项目有多个模块,并使用Plug.Router。我意识到在这种情况下,prying可能不是最好的调试技术。仍然...
我很想学习如何使用pry进行调试,因此我测试了一个与this solution非常相似的简单案例。简而言之,从进程环境中撬开变量需要在编译期间运行IEx shell。这适用于单个模块,如上面链接的示例;但是,我当前的项目要求我mix
项目目录。纠正我,也许有一种冗长的方法来编译和运行erlang控制台中的项目目录?无论如何,mix run --no-halt
和iex -S mix run
都不适用于Windows(后者请求--werl
标志)。
然后我尝试了一个更简单的项目,它没有使用Plug,只有一个模块,一个递归计数器。尽管如此,我还是iex -S mix
标志--werl
。 Erlang控制台打开,关闭,应用程序未启动。
DDDDD
我推断我不能mix
带有--werl
标志的项目目录,但是我什么时候应该使用它?我怎么能撬开IEx外壳?如果可能的话,我宁愿不使用Erlang控制台。
阅读IEx的Hex文档:
在某些Windows shell上可能无法使用此类函数[在其示例中为Enum]。你可能需要在启动iex时传递--werl标志,就像在iex --werl中工作一样。 - 可以通过设置IEX_WITH_WERL环境变量永久启用--werl。
文档不再说何时使用--werl
选项。
显然,我是Elixir的新手,但即使这个问题是在大约2年前提出的,这似乎并不是一个显而易见的区别。
答案 0 :(得分:1)
如果您想同时使用--werl
和-S mix
,则必须将--werl
放在-S mix
之前。
iex --werl -S mix
将有效,而iex -S mix --werl
无效。