我有一个由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