我在启动牛仔应用程序时遇到了问题,它给了我以下错误。由于某些原因,牧场没有启动,尽管我在应用程序中添加了启动牧场的代码。
我看到一辆新的战车被拖走了。但还是有麻烦。
1> application:start(satomi).
{error,
{bad_return,
{{satomi_app,start,[normal,[]]},
{'EXIT',
{noproc,
{gen_server,call,
[ranch_sup,
{start_child,
{{ranch_listener_sup,http},
{ranch_listener_sup,start_link,
[http,100,ranch_tcp,
[{port,9090}],
cowboy_protocol,
[{...}]]},
permanent,5000,supervisor,
[ranch_listener_sup]}},
infinity]}}}}}}
=INFO REPORT==== 12-Sep-2013::11:42:46 ===
application: satomi
exited: {bad_return,
{{satomi_app,start,[normal,[]]},
{'EXIT',
{noproc,
{gen_server,call,
[ranch_sup,
{start_child,
{{ranch_listener_sup,http},
{ranch_listener_sup,start_link,
[http,100,ranch_tcp,
[{port,9090}],
cowboy_protocol,
[{env,
[{dispatch,
[{'_',[],[{[],[],toppage_handler,[]}]}]}]}]]},
permanent,5000,supervisor,
[ranch_listener_sup]}},
infinity]}}}}}
type: temporary以下是我的app.src
>cat satomi.app.src
{application, satomi,
[
{description, ""},
{vsn, "1"},
{registered, []},
{applications, [
kernel,
stdlib,
cowboy
]},
{mod, { satomi_app, []}},
{env, []}
]}.>cat satomi.erl
-module(satomi).
-export([start/0]).
start()->
ok = application:start(crypto),
ok = application:start(sasl),
ok = application:start(ranch),
ok = application:start(cowlib),
ok = application:start(cowboy),
ok = application:start(satomi).我想弄清楚到底是怎么回事
有人能告诉我牛仔的工作样本,我可以用它作为模板吗?我使用钢筋来编译代码。我不认为这会有什么不同。我使用以下命令启动应用程序
erl -pa ./ebin ./deps/*/ebin
发布于 2013-09-16 12:30:36
当从shell调用application:start(satomi)时,它不会自动启动它所依赖的应用程序,这些应用程序需要手动启动。您所拥有的satomi:start/0函数正是这样做的,因此解决方案是从shell调用satomi:start()。
原因是application:start(satomi)实际上不会调用satomi:start(),当应用程序不是Erlang发行版的一部分时,它是启动应用程序及其依赖关系的一种方便方法。
更新:由于Erlang R16B02,也有刚开始。它自动启动所有依赖项。
https://stackoverflow.com/questions/18772341
复制相似问题