在我的 Phoenix 应用程序中使用iex
控制台时,如下所示:
iex -S mix phx.server
我似乎无法调用函数,System
例如它强制命名空间到模块的前面。由于该命名空间模块不存在而导致错误。System.stop(1)
System.halt(1)
** (UndefinedFunctionError) function MyApp.SomeNamespace.System.stop/1 is undefined or private
为什么它在这个核心模块前面加上一个命名空间?为什么它会使用类似的模块产生此错误System
,但不会使用类似Enum
、、List
或的模块Map
?
此外,如果我iex
在我的应用程序源之外使用,我可以System.any_function
按预期调用。
经过进一步检查,我可以通过调用Elixir.System.stop/1
. 为什么我需要在System
模块前面加上Elixir.
但我不需要为其他 Elixir 模块这样做?
在我的应用程序代码中,我调用类似System.backtrace
或System.get_env
不需要别名或命名空间的东西。我也没有System
在应用程序中命名的模块(即,没有Myapp.System
定义或类似的模块)。