Phoenix/Erlang节点连接

Phoenix/Erlang node connection

我在一台机器上启动了一个 Elixir Phoenix 节点,在另一台机器上启动了一个 Erlang 节点。 Erlang 节点有一个名为 "rec" 的进程,它接受一个包含三个元素的元组:一个原子和两个字符列表。当我在 Elixir 节点上 运行 这段代码时:

Node.spawn_link(node_name, fn -> send(:rec, {:create, uuid, link}) end)

它 运行 是需要的,但是当我从 Phoenix 控制器 运行 它时,它 returns 出现这样的错误:

[error] Error in process #PID<14185.2561.0> on node :"node1@192.168.0.137" with exit value:
{:undef, [{#Function<0.87309885/0 in SlrRecorderApiWeb.CameraController.add/2>, [], []}]}

我应该怎样做才能运行它正确?

发生这种情况是因为模块 SlrRecorderApiWeb.CameraController 没有加载到有问题的 Erlang 节点上:当您发送一个 fn 函数到另一个节点上 运行 时,模块定义的地方必须加载到两个节点上。

好消息是你不需要在这里使用函数,你可以只使用:

send({:rec, node_name}, {:create, uuid, link})

消息将被发送到另一个节点上名为rec的进程。