elixir中的函数未定义(混合测试)

时间:2017-05-22 07:59:10

标签: erlang elixir jupyter-notebook zeromq mix

我试图在Xubuntu 16.04上安装IElixir Jupyter笔记本内核。我之前在使用Xubuntu 16.04的另一台机器上成功完成了它。

我有最新的erlang otp 19.3和elixir 1.4.4(使用kiex安装)。

执行mix test后,我收到有关未定义:erlzmq_nif.context/1函数的错误:

** (Mix) Could not start application ielixir: exited in: IElixir.start(:normal, [])
    ** (EXIT) an exception was raised:
        ** (UndefinedFunctionError) function :erlzmq_nif.context/1 is undefined (module :erlzmq_nif is not available)
            :erlzmq_nif.context(1)
            (ielixir) lib/ielixir.ex:13: IElixir.start/2
            (kernel) application_master.erl:273: :application_master.start_it_old/4

事情是所有依赖项都已成功安装,我可以在:erlzmq_nif.context/1中使用iex

iex(1)> :erlzmq_nif.context 1
{:ok, ""}
iex(2)> 

我已将erlzmq的版本复制到/usr/lib/erlang/lib,以便我也可以在erlang中使用它:

1> erlzmq_nif:context(3).
{ok,<<>>}
2> 

为什么使用mix时这个lib对elixir不可见?

1 个答案:

答案 0 :(得分:0)

我没有解决这个问题,我已经设法让 IElixir 工作了。

我所做的是用:erlzmq mix.exs替换github: "zeromq/erlzmq"依赖项(在回购名称中注意没有2),这可能不会超过erlzmq2因为它不是基于NIF的,但至少它没有问题。