erlang - net_kernel :start fails with `{' EXIT', nodistribution}`

标签 erlang

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

我尝试通过以下方式启动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/

相关文章:

Ruby 调试输出 - 轻松打开/关闭

erlang - 如何构建一个在执行后不会停止 Erlang VM 的 Elixir 脚本(如 elixir --no-halt)

erlang - 在 mnesia 集群中,查询哪个节点?

.net - .NET是否有支持Erlang的 "mobile code"概念的框架?

erlang - 获取在远程节点上运行的进程的 PID

erlang - 用于创建erlang集群的主机名

loops - 如何使用 Erlang 遍历列表中的所有元素

erlang - 如何跨多个模块包含 .hrl 文件 rebar3

erlang 中的 csv 解析器

list - 在 Erlang 中展平嵌套列表的列表