我在一台计算机上启动了一个Elixir Phoenix节点,而另一台计算机上启动了一个Erlang节点。 Erlang节点具有一个名为“ rec”的进程,该进程接受三个元素的元组:一个原子和两个字符列表。当我在Elixir节点上运行此代码时:
Node.spawn_link(node_name, fn -> send(:rec, {:create, uuid, link}) end)
它会根据需要运行,但是当我从Phoenix控制器运行它时,它将返回如下错误:
[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>, [], []}]}
我应该怎么做才能正确运行它?
答案 0 :(得分:2)
之所以会这样,是因为模块/
没有加载到有问题的Erlang节点上:当您发送要在另一个节点上运行的SlrRecorderApiWeb.CameraController
函数时,必须在其中定义该模块在两个节点上都加载。
好消息是您不需要在这里使用函数,只需使用:
fn
,消息将被发送到另一个节点上名为send({:rec, node_name}, {:create, uuid, link})
的进程。