Elixir 无法加载Erlang包
我试图在我的Phoenix项目中使用Erlang包(这个:),所以我只是想从我的mix文件中获取它:Elixir 无法加载Erlang包,elixir,phoenix-framework,elixir-mix,Elixir,Phoenix Framework,Elixir Mix,我试图在我的Phoenix项目中使用Erlang包(这个:),所以我只是想从我的mix文件中获取它: defp deps do [{:phoenix, "~> 1.3.0-rc"}, {:phoenix_pubsub, "~> 1.0"}, {:phoenix_ecto, "~> 3.2"}, {:postgrex, ">= 0.0.0"}, {:gettext, "~> 0.11"}, {:cowboy
defp deps do
[{:phoenix, "~> 1.3.0-rc"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.2"},
{:postgrex, ">= 0.0.0"},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:comeonin, "~> 3.0"},
{:uuid, "~> 1.1"},
{:timex, "~> 3.1"},
{:timex_ecto, "~> 3.1"},
{:porcelain, "~> 2.0"},
{:qrcode, git: "https://github.com/komone/qrcode"}, # <--
{:credo, "~> 0.7", only: [:dev, :test]}]
end
还有其他步骤可以让它工作吗?编辑
我下面的例子是在Elixir项目中包含Erlang源代码,而不是像问题所问的那样作为依赖项。我将这篇文章留在这里,以防它能帮助其他人如何编译他们的Erlang代码
我已经做了一段时间了,但回顾以前的项目,我在我的mix.exs
文件中看到了以下内容:
def project do
[ app: :mdse,
# ...
erlc_paths: ["./lib/mdse/rpc/src", "src"]
]
end
这会让它通过mix自动编译
在查看了您提供的
qrcode
的源代码后,它不是一个应用程序。因此,我不相信您可以将其添加到应用程序:
列表中。相反,您应该能够将其用作任何Erlang库,如:qrcode.encode(…)
刚刚找到了方便的混合选项来传递:
{:qrcode, git: "https://github.com/komone/qrcode", app: false}
以防止Mix尝试加载包应用程序文件
注意:您可以使用:compile
选项来摆脱EmakFile包的手动编译,在这种情况下:
{:qrcode, git: "https://github.com/komone/qrcode", app: false, compile: "erl -make"}
:qrcode未在mix文件的“我的应用程序”中列出,但mix似乎仍在默认情况下尝试将其作为应用程序加载。@Kerneel感谢您的分享。我以前从未尝试过使用依赖项中的非应用程序。你可能在将来为我节省了一些令人挠头的时间。我想这也解决了
erlcu路径的问题。我刚刚意识到我下面的例子是为了在我的项目中包含Erlang代码,而不是作为依赖项。
{:qrcode, git: "https://github.com/komone/qrcode", app: false, compile: "erl -make"}