依赖于cowboy的erlang OTP应用程序(nerlnetApp)在使用以下命令执行时编译并成功运行:rebar3 shell,从应用程序目录。
但是,erlang shell不能在CI环境中运行,因此我们决定使用以下方法运行它:
erl -pa jsx/ebin ranch/ebin cowlib/ebin cowboy/ebin nerlnetApp/ebin -eval "nerlnetApp_app:start(a,b)."
此命令将生成以下错误:
{"init terminating in do_boot",
{noproc,{gen_server,call,[ranch_sup,{start_child,{{ranch_listener_sup,nerlnetInitiator},
{ranch_listener_sup,start_link,[nerlnetInitiator,ranch_tcp,#{connection_type=>supervisor,socket_opts=>[{port,8484}]},cowboy_clear,#{connection_type=>supervisor,env=>#{dispatch=>[{'_',[],[{[<<"updateJsonPath">>],[],jsonHandler,[<0.9.0>]},{[<<"isNerlnetDevice">>],[],iotHandler,[<0.9.0>]}]}]}}]},permanent,infinity,supervisor,[ranch_listener_sup]}},infinity]}}}
链接到init_cowboy_start_clear失败的nerlnetInitiator。
使用rebar.config文件链接到application directory。
1条答案
按热度按时间c7rzv4ha1#
函数
nerlnetApp_app:start/2
是application
行为的回调函数--它不能被直接调用。试试这个:这将在启动应用程序本身之前启动所有依赖项,包括
ranch
。这应该可以避免noproc
错误,这意味着没有名为ranch_sup
的进程正在运行。