gpt4 book ai didi

namespaces - 如何在 Elixir Phoenix iex 控制台中停止强制模块命名空间?

转载 作者:行者123 更新时间:2023-12-04 17:01:48 24 4
gpt4 key购买 nike

使用 iex 时我的 Phoenix 应用程序中的控制台,如下所示:
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.backtraceSystem.get_env不需要别名或命名空间。我也没有名为 System 的模块在应用程序中(即,没有定义 Myapp.System 或类似的模块)。

最佳答案

查找 iex.exs 文件。如果有这样的文件,它会在运行 iex 时自动运行。如果您在 iex.exs 中引用命名空间,则可以解释这种行为。

您可以在文档 https://hexdocs.pm/iex/IEx.html#module-the-iex-exs-file 中找到更多信息

关于namespaces - 如何在 Elixir Phoenix iex 控制台中停止强制模块命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51678308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com