【问题标题】:How to load an Erlang module within a Elixir/mix project?如何在 Elixir/mix 项目中加载 Erlang 模块?
【发布时间】:2018-11-26 13:50:15
【问题描述】:

我有一个由 mix 管理的 Elixir 项目。当以 iex -S mix 开始时,我的 lib 文件夹中的所有 Elixir 模块都会被加载。 lib 文件夹中 .erl 文件中的 Erlang 模块不会。

我想知道 a) 我如何从我的 Elixir 代码中显式加载 Erlang 模块,或者 b) 我必须做什么才能混合自动加载 Erlang 模块。 (最好两者都有;))

【问题讨论】:

  • 你为什么把erlang模块放到.ex文件中?放入.erl文件中。
  • 对不起。它一个.erl 文件。我纠正了这个问题。感谢您的提示。

标签: erlang elixir


【解决方案1】:

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

处理编译 erlang 模块 (mix compile.erlang) 的 mix 任务假定包含 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

【讨论】:

  • 另外,要自动运行compile.erlang 任务,请将其作为别名添加到项目定义中:aliases: ["compile.erlang", "run"]
猜你喜欢
  • 2016-03-05
  • 2013-11-15
  • 2012-10-24
  • 1970-01-01
  • 2016-03-10
  • 2019-01-19
  • 2016-10-20
  • 2016-12-28
  • 2013-11-07
相关资源
最近更新 更多