我有一个由mix管理的Elixir项目。当使用iex -S mix启动时,我的lib文件夹中的所有Elixir模块都将被加载。 lib文件夹中.erl文件中的Erlang模块没有。

我想知道要么a)如何从我的Elixir代码中显式加载Erlang模块,要么b)混合自动加载Erlang模块也需要做什么。 (最好两个都))

最佳答案

被编译的Erlang模块将自动包含在内。如果您的本地erlang模块位于lib/文件夹中,则问题可能是未编译。

处理编译erlang模块(mix compile.erlang)的mix任务假定在src/目录中包含erlang模块的默认路径。

如果您希望将其放置在其他位置,则可以通过:erlc_paths在项目配置中的mix.exs参数来调整配置。一个简单的例子如下:

def project do
  [
    app: :test,
    version: "0.1.0",
    elixir: "~> 1.6",
    erlc_paths: ["lib"],
    start_permanent: Mix.env() == :prod,
    deps: deps()
  ]
end

10-06 10:10
查看更多