由于 return 错误,无法启动 Erlang 应用程序
Can not start Erlang Application due to bad return error
我有一个简单的 erlang 应用程序,我试图启动它但无济于事得到一个错误的 return 错误:
> {error,
> {bad_return,
> {{mapp,start,[normal,[]]},
> {'EXIT',
> {undef,
> [{mapp,start,[normal,[]],[]},
> {application_master,start_it_old,4,
> [{file,"application_master.erl"},{line,277}]}]}}}}}
.app
{
application,mapp,
[
{vsn,"1.0.0"},
{description,"some description"},
{mod,{mapp,[]}},
{modules,[mapp,m1]}
]
}.
文件夹结构:
-root
-mapp.app
-src
-m1.erl
-mapp.erl
-include
-state.hrl
-ebin
申请
-module(mapp).
-behaviour(application).
-export([start/2,stop/1]).
start(normal,_Args)->
Pid=m1:start_link(),
{ok,Pid}.
stop(State)->ok.
模块
-module(m1).
-include("r.hrl").
-export([start_link/0]).
start_link()->
Pid=spawn_link(?MODULE,serv,#state{count=2}),
Pid.
serv(State=#state{count=C})->
receive
{From,MSG} ->From ! {ok,MSG},
serv(State#state{count=C=1})
end.
.hrl
-record(state,{
count=0
}).
所以我的 m1
模块 return 是 Pid
。我遵守 application:start/2
return 类型和 return {ok,Pid}
.
这里有什么问题?我尝试了 Pid
和 {ok,Pid}
都无济于事。
错误指出 mapp:start/2
是 undef
。看到你的mapp.erl
导出了,我怀疑模块mapp
没有加载。
你运行申请的怎么样了?我怀疑您没有使用 rebar3
或 erlang.mk
之类的发布工具,因为应用程序文件通常位于 src.
中
我有一个简单的 erlang 应用程序,我试图启动它但无济于事得到一个错误的 return 错误:
> {error,
> {bad_return,
> {{mapp,start,[normal,[]]},
> {'EXIT',
> {undef,
> [{mapp,start,[normal,[]],[]},
> {application_master,start_it_old,4,
> [{file,"application_master.erl"},{line,277}]}]}}}}}
.app
{
application,mapp,
[
{vsn,"1.0.0"},
{description,"some description"},
{mod,{mapp,[]}},
{modules,[mapp,m1]}
]
}.
文件夹结构:
-root
-mapp.app
-src
-m1.erl
-mapp.erl
-include
-state.hrl
-ebin
申请
-module(mapp).
-behaviour(application).
-export([start/2,stop/1]).
start(normal,_Args)->
Pid=m1:start_link(),
{ok,Pid}.
stop(State)->ok.
模块
-module(m1).
-include("r.hrl").
-export([start_link/0]).
start_link()->
Pid=spawn_link(?MODULE,serv,#state{count=2}),
Pid.
serv(State=#state{count=C})->
receive
{From,MSG} ->From ! {ok,MSG},
serv(State#state{count=C=1})
end.
.hrl
-record(state,{
count=0
}).
所以我的 m1
模块 return 是 Pid
。我遵守 application:start/2
return 类型和 return {ok,Pid}
.
这里有什么问题?我尝试了 Pid
和 {ok,Pid}
都无济于事。
错误指出 mapp:start/2
是 undef
。看到你的mapp.erl
导出了,我怀疑模块mapp
没有加载。
你运行申请的怎么样了?我怀疑您没有使用 rebar3
或 erlang.mk
之类的发布工具,因为应用程序文件通常位于 src.