net_kernel:start 失败并显示 `{'EXIT',nodistribution}`

KoL*_*Ber 6 erlang

我遇到了一个问题,希望有人能帮助我。

我尝试开始net_kernel

net_kernel:start([test,shortnames]).
Run Code Online (Sandbox Code Playgroud)

但我遇到了这个错误:

{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
Run Code Online (Sandbox Code Playgroud)

惊人的提示是,当尝试开始时net_kernel

erl -sname test
Run Code Online (Sandbox Code Playgroud)

net_kernel 将成功启动

另一个惊人的提示是,在net_kernel操作系统启动并退出 erl shell 后至少启动一次后,第一种启动方式net_kernel将成功运行:|

( net_kernel:start([...]) )
Run Code Online (Sandbox Code Playgroud)

经过一番搜索,我发现 CouchBase 和 RabbitMQ-Server 和 Ejabberd 以及其他一些使用 erlang 的应用程序,报告了这个错误( nodistribution error )

Mic*_*ael 4

您没有运行 epmd,这就是问题所在econnrefused。你几时开始net_kernel它想要向 epmd 注册一个名称,以便可以找到该节点。

确保启动时有一个 epmd 进程正在运行net_kernel,我敢打赌问题就会消失。

关于erl -sname test工作,我希望您能启动 epmd?