我遇到了一个问题,希望有人能帮助我。
我尝试通过以下方式启动net_kernel
:
net_kernel:start([test,shortnames]).
但是我遇到了这个错误:
{error,
{{shutdown,
{failed_to_start_child,net_kernel,{'EXIT',nodistribution}}},
{child,undefined,net_sup_dynamic,
{erl_distribution,start_link,[[test,shortnames]]},
permanent,1000,supervisor,
[erl_distribution]}}}
=INFO REPORT==== 23-Apr-2017::21:07:43 ===
Protocol: "inet_tcp": register/listen error: econnrefused
令人惊奇的提示是,当尝试通过以下方式启动 net_kernel
时:
erl -sname test
net_kernel
将成功启动
另一个令人惊奇的提示是,在操作系统启动并退出 erl shell 后启动 net_kernel
至少一次,启动 net_kernel
的第一种方法将成功运行:|
( net_kernel:start([...]) )
经过一番搜索,我发现 CouchBase、RabbitMQ-Server 和 Ejabberd 以及其他一些使用 erlang 的应用程序报告了此错误(nodistribution error)
最佳答案
您没有运行 epmd,这就是 econnrefused
的含义。当您启动 net_kernel
时,它想要向 epmd 注册一个名称,以便可以找到该节点。
确保启动 net_kernel
时有一个 epmd 进程正在运行,我敢打赌问题就会消失。
关于 erl -sname test
工作,我希望它会为您启动 epmd?
关于erlang - net_kernel :start fails with `{' EXIT', nodistribution}`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43574024/