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のようなモジュールでは発生しないのはなぜですか?EnumListMap
また、iexアプリケーション ソースの外部で使用するとSystem.any_function、期待どおりに呼び出すことができます。
さらに調べてみると、 を呼び出すことで動作させることができますElixir.System.stop/1。Systemモジュールの先頭Elixir.に を付ける必要があるのに、他の Elixir モジュールでは必要がないのはなぜですか?
アプリケーション コード内で、エイリアスや名前空間を必要とせずにSystem.backtraceor などを呼び出します。System.get_envまた、アプリケーションで名前が付けられたモジュールもありませんSystem(つまり、モジュールが定義されていないMyapp.Systemか、類似したモジュールが定義されていません)。