我有一个由混合管理的Elixir项目。以iex -S mix
启动时,我的lib文件夹中的所有Elixir模块都会被加载。 lib文件夹中.erl
文件中的Erlang模块不会。
我想知道a)如何从我的Elixir代码中明确加载Erlang模块或b)我还需要做什么来混合自动加载Erlang模块。 (最好是两者;))
答案 0 :(得分:2)
编译的Erlang模块将自动包含在内。如果你的本地erlang模块在lib/
文件夹中,虽然问题可能是它没有被编译。
处理编译erlang模块的混合任务(mix compile.erlang)假定包含erlang模块的默认路径位于src/
目录中。
如果您希望将其放在其他位置,可以通过: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