2017-09-29 15 views
0

私はlocalhostから開始するカウボーイプロジェクトを書いたgmake runです。カーネルpidでアプリケーションの起動が失敗した、bad_return

私は新規インストールにmake run、このエラーが起こる:

~/tunnel# make run 
erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html 
make[1]: Entering directory `/root/tunnel/deps/cowboy' 
../../erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html 
make[2]: Entering directory `/root/tunnel/deps/cowlib' 
../../erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html 
../../erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html 
make[2]: Leaving directory `/root/tunnel/deps/cowlib' 
make[2]: Entering directory `/root/tunnel/deps/ranch' 
../../erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html 
../../erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html 
make[2]: Leaving directory `/root/tunnel/deps/ranch' 
../../erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html 
GEN rebar.config 
make[1]: Leaving directory `/root/tunnel/deps/cowboy' 
make[1]: Entering directory `/root/tunnel/deps/jiffy' 
./rebar compile 
==> jiffy (compile) 
make[1]: Leaving directory `/root/tunnel/deps/jiffy' 
DEPEND tunnel.d 
erlang.mk:24: Please upgrade to GNU Make 4 or later: https://erlang.mk/guide/installation.html 
ERLC tunnel_app.erl 
APP tunnel 
===> Starting relx build process ... 
===> Resolving OTP Applications from directories: 
      /root/tunnel/ebin 
      /root/tunnel/deps 
      /usr/local/lib/erlang/lib 
      /root/tunnel/apps 
      /root/tunnel/_rel 
===> Resolved tunnel_release-1 
===> Including Erts from /usr/local/lib/erlang 
===> release successfully created! 
===> tarball /root/tunnel/_rel/tunnel_release/tunnel_release-1.tar.gz successfully created! 
Exec: /root/tunnel/_rel/tunnel_release/erts-9.0/bin/erlexec -boot /root/tunnel/_rel/tunnel_release/releases/1/tunnel_release -mode embedded -boot_var ERTS_LIB_DIR /root/tunnel/_rel/tunnel_release/erts-9.0/../lib -config /root/tunnel/_rel/tunnel_release/releases/1/sys.config -args_file /root/tunnel/_rel/tunnel_release/releases/1/vm.args -- console 
Root: /root/tunnel/_rel/tunnel_release 
/root/tunnel/_rel/tunnel_release 
heart_beat_kill_pid = 16083 
Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [kernel-poll:false] 


=INFO REPORT==== 29-Sep-2017::11:46:35 === 
    application: tunnel 
    exited: {bad_return, 
      {{tunnel_app,start,[normal,[]]}, 
       {'EXIT', 
       {undef, 
       [{cowboy,start_clear, 
        [my_http_listener,100, 
        [{port,8080}], 
        #{env => 
         #{dispatch => 
         [{'_',[], 
          [{[<<"info">>],[],lobby_handler,[]}, 
          {[<<"join">>,name],[],join_handler,[]}, 
          {[<<"player">>,<<"status">>,name], 
          [],player_status_handler,[]}, 
          {[<<"tables">>,<<"info">>,table_id], 
          [],table_info_handler,[]}, 
          {[<<"tables">>,<<"play">>,table_id,name,auth, 
           action,x,y], 
          [],table_play_handler,[]}, 
          {[<<"assets">>,'...'], 
          [],cowboy_static, 
          {dir,"/root/tunnel/static/assets/"}}]}]}}], 
        []}, 
       {tunnel_app,start,2,[{file,"src/tunnel_app.erl"},{line,17}]}, 
       {application_master,start_it_old,4, 
        [{file,"application_master.erl"},{line,273}]}]}}}} 
    type: permanent 
{"Kernel pid terminated",application_controller,"{application_start_failure,tunnel,{bad_return,{{tunnel_app,start,[normal,[]]},{'EXIT',{undef,[{cowboy,start_clear,[my_http_listener,100,[{port,8080}],#{env => #{dispatch => [{'_',[],[{[<<\"info\">>],[],lobby_handler,[]},{[<<\"join\">>,name],[],join_handler,[]},{[<<\"player\">>,<<\"status\">>,name],[],player_status_handler,[]},{[<<\"tables\">>,<<\"info\">>,table_id],[],table_info_handler,[]},{[<<\"tables\">>,<<\"play\">>,table_id,name,auth,action,x,y],[],table_play_handler,[]},{[<<\"assets\">>,'...'],[],cowboy_static,{dir,\"/root/tunnel/static/assets/\"}}]}]}}],[]},{tunnel_app,start,2,[{file,\"src/tunnel_app.erl\"},{line,17}]},{application_master,start_it_old,4,[{file,\"application_master.erl\"},{line,273}]}]}}}}}"} 
Kernel pid terminated (application_controller) ({application_start_failure,tunnel,{bad_return,{{tunnel_app,start,[normal,[]]},{'EXIT',{undef,[{cowboy,start_clear,[my_http_listener,100,[{port,8080}],#{ 
heart: Fri Sep 29 11:46:36 2017: Erlang is crashing .. (waiting for crash dump file) 
heart: Fri Sep 29 11:46:36 2017: Would reboot. Terminating. 
make: *** [run] Error 1 

を私はtunnel_appに悪いリターンを参照してください

これは

-module(tunnel_app). 
-behaviour(application). 

-export([start/2]). 
-export([stop/1]). 

start(_Type, _Args) -> 
    Dispatch = cowboy_router:compile([ 
    {'_', [ 
    {"/info", lobby_handler, []}, 
    {"/join/:name", join_handler, []}, 
    {"/player/status/:name", player_status_handler, []}, 
    {"/tables/info/:table_id", table_info_handler, []}, 
    {"/tables/play/:table_id/:name/:auth/:action/:x/:y", table_play_handler, []}, 
    {"/assets/[...]", cowboy_static, {dir, "https://stackoverflow.com/users/quantum/tunnel/static/assets/"}} 
    ]}]), 
    {ok, _} = cowboy:start_clear(my_http_listener, 100, 
    [{port, 8080}], 
    #{env => #{dispatch => Dispatch}}), 
    {ok, MainDoor} = door:go(), 
    register(main_door, MainDoor), 
    {ok, MainRoom} = room:go(), 
    register(main_room, MainRoom), 
    tunnel_sup:start_link(). 

stop(_State) -> 
    ok. 

tunnel_sup.erl私tunnel_app.erlですstart_link

-module(tunnel_sup). 
-behaviour(supervisor). 

-export([start_link/0]). 
-export([init/1]). 

start_link() -> 
    supervisor:start_link({local, ?MODULE}, ?MODULE, []). 

init([]) -> 
    Procs = [], 
    {ok, {{one_for_one, 1, 5}, Procs}}. 

私は

.erlang.mk/ 
*.beam 
src/*.beam 
_rel/ 
deps/ 
ebin/ 

私の.gitignoreをチェックし、完全なリポジトリはここにある:https://github.com/quantumproductions/tunnel

私は私のマシン上のフォルダをコピーすることができるよ、それが動作します。これをgithubにアップロードしてダウンロードすると、makeは失敗します。

~/tunnel3/ls 
Makefile deps  erlang.mk rel  src  tunnel.d 
_rel  ebin  oldh  relx.config static 

~/tdep/ls 
Makefile deps  erlang.mk rel  src  tunnel.d 
_rel  ebin  oldh  relx.config static 

もう一つは失敗します。

~/tdep/gmake run 
Error: No Makefile to build dependency /Users/quantum/tdep/deps/cowboy. 
gmake: *** [erlang.mk:4182: deps] Error 2 

最初のフォルダは、この原因

/tunnel3/gmake run 
gmake[1]: Entering directory '/Users/quantum/tunnel3/deps/cowboy' 
gmake[2]: Entering directory '/Users/quantum/tunnel3/deps/cowlib' 
gmake[2]: Leaving directory '/Users/quantum/tunnel3/deps/cowlib' 
gmake[2]: Entering directory '/Users/quantum/tunnel3/deps/ranch' 
gmake[2]: Leaving directory '/Users/quantum/tunnel3/deps/ranch' 
GEN rebar.config 
gmake[1]: Leaving directory '/Users/quantum/tunnel3/deps/cowboy' 
gmake[1]: Entering directory '/Users/quantum/tunnel3/deps/jiffy' 
CC=gcc ./enc compile 
gmake -f c_src/Makefile.erlang.mk 
gmake[2]: Entering directory '/Users/quantum/tunnel3/deps/jiffy' 
gmake[2]: Nothing to be done for 'all'. 
gmake[2]: Leaving directory '/Users/quantum/tunnel3/deps/jiffy' 
gmake[1]: Leaving directory '/Users/quantum/tunnel3/deps/jiffy' 
===> Starting relx build process ... 
===> Resolving OTP Applications from directories: 
      /Users/quantum/tunnel3/ebin 
      /Users/quantum/tunnel3/deps 
      /usr/local/Cellar/erlang/19.2/lib/erlang/lib 
      /Users/quantum/tunnel3/apps 
      /Users/quantum/tunnel3/_rel 

は何ができるかの構成正常に動作しますか?

EDIT:私のクローン化されたフォルダ内の

フアンホ・マーティンの答え作品、。

私の元のフォルダにはありませんが、100引数を削除すると以下のようになります。

なぜ特定のフォルダでは機能しないのですか?これを防ぐには、どのような環境対策が必要ですか? ~/tunnelはカウボーイの別のバージョンを実行しているようですか?

/tunnel/gmake run 
gmake[1]: Entering directory '/Users/quantum/tunnel/deps/cowboy' 
gmake[2]: Entering directory '/Users/quantum/tunnel/deps/cowlib' 
gmake[2]: Leaving directory '/Users/quantum/tunnel/deps/cowlib' 
gmake[2]: Entering directory '/Users/quantum/tunnel/deps/ranch' 
gmake[2]: Leaving directory '/Users/quantum/tunnel/deps/ranch' 
GEN rebar.config 
gmake[1]: Leaving directory '/Users/quantum/tunnel/deps/cowboy' 
gmake[1]: Entering directory '/Users/quantum/tunnel/deps/jiffy' 
CC=gcc ./enc compile 
gmake -f c_src/Makefile.erlang.mk 
gmake[2]: Entering directory '/Users/quantum/tunnel/deps/jiffy' 
gmake[2]: Nothing to be done for 'all'. 
gmake[2]: Leaving directory '/Users/quantum/tunnel/deps/jiffy' 
gmake[1]: Leaving directory '/Users/quantum/tunnel/deps/jiffy' 
DEPEND tunnel.d 
ERLC tunnel_app.erl 
APP tunnel 
===> Starting relx build process ... 
===> Resolving OTP Applications from directories: 
      /Users/quantum/tunnel/ebin 
      /Users/quantum/tunnel/deps 
      /usr/local/Cellar/erlang/19.2/lib/erlang/lib 
      /Users/quantum/tunnel/apps 
      /Users/quantum/tunnel/_rel 
===> Resolved tunnel_release-1 
===> Including Erts from /usr/local/Cellar/erlang/19.2/lib/erlang 
===> release successfully created! 
===> tarball /Users/quantum/tunnel/_rel/tunnel_release/tunnel_release-1.tar.gz successfully created! 
Exec: /Users/quantum/tunnel/_rel/tunnel_release/erts-8.2/bin/erlexec -boot /Users/quantum/tunnel/_rel/tunnel_release/releases/1/tunnel_release -mode embedded -boot_var ERTS_LIB_DIR /Users/quantum/tunnel/_rel/tunnel_release/erts-8.2/../lib -config /Users/quantum/tunnel/_rel/tunnel_release/releases/1/sys.config -args_file /Users/quantum/tunnel/_rel/tunnel_release/releases/1/vm.args -- console 
Root: /Users/quantum/tunnel/_rel/tunnel_release 
/Users/quantum/tunnel/_rel/tunnel_release 
heart_beat_kill_pid = 3135 
Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] 


=INFO REPORT==== 5-Oct-2017::16:54:36 === 
    application: tunnel 
    exited: {bad_return, 
       {{tunnel_app,start,[normal,[]]}, 
       {'EXIT', 
        {undef, 
         [{cowboy,start_clear, 
           [my_http_listener, 
           [{port,8080}], 
           #{env => #{dispatch => [{'_',[], 
             [{[<<"info">>],[],lobby_handler,[]}, 
             {[<<"join">>,name], 
              [],join_handler,[]}, 
             {[<<"player">>,<<"status">>,name], 
              [],player_status_handler,[]}, 
             {[<<"tables">>,<<"info">>,table_id], 
              [],table_info_handler,[]}, 
             {[<<"tables">>,<<"play">>,table_id, 
              name,auth,action,x,y], 
              [],table_play_handler,[]}, 
             {[<<"assets">>,'...'], 
              [],cowboy_static, 
              {dir, 
               "https://stackoverflow.com/users/quantum/tunnel/static/assets/"}}]}]}}], 
           []}, 
          {tunnel_app,start,2, 
           [{file,"src/tunnel_app.erl"},{line,17}]}, 
          {application_master,start_it_old,4, 
           [{file,"application_master.erl"}, 
           {line,273}]}]}}}} 
    type: permanent 
{"Kernel pid terminated",application_controller,"{application_start_failure,tunnel,{bad_return,{{tunnel_app,start,[normal,[]]},{'EXIT',{undef,[{cowboy,start_clear,[my_http_listener,[{port,8080}],#{env => #{dispatch => [{'_',[],[{[<<\"info\">>],[],lobby_handler,[]},{[<<\"join\">>,name],[],join_handler,[]},{[<<\"player\">>,<<\"status\">>,name],[],player_status_handler,[]},{[<<\"tables\">>,<<\"info\">>,table_id],[],table_info_handler,[]},{[<<\"tables\">>,<<\"play\">>,table_id,name,auth,action,x,y],[],table_play_handler,[]},{[<<\"assets\">>,'...'],[],cowboy_static,{dir,\"https://stackoverflow.com/users/quantum/tunnel/static/assets/\"}}]}]}}],[]},{tunnel_app,start,2,[{file,\"src/tunnel_app.erl\"},{line,17}]},{application_master,start_it_old,4,[{file,\"application_master.erl\"},{line,273}]}]}}}}}"} 
Kernel pid terminated (application_controller) ({application_start_failure,tunnel,{bad_return,{{tunnel_app,start,[normal,[]]},{'EXIT',{undef,[{cowboy,start_clear,[my_http_listener,[{port,8080}],#{env 
heart: Thu Oct 5 16:54:37 2017: Erlang is crashing .. (waiting for crash dump file) 
heart: Thu Oct 5 16:54:37 2017: Would reboot. Terminating. 
gmake: *** [erlang.mk:6450: run] Error 1 
~/tunnel/ 

Aha。私は@lastcanalからのコメントの指示をして、それは動作します。ありがとう。

+0

'のerlang-MKを作る実行してみてください。ミルクを作る。 make。それはerlang.mk環境を再構築し、あなたのdepsとappを再構築する前にすべてをきれいにします。 – lastcanal

答えて

0

私が見る最初のものは、あなたがあなたがtunnel_app.erlモジュールでは、あなたがカウボーイを呼んでいるwhy-is-my-cowboy-server-not-running

flag 

で同様の問題をチェックすることができるの.appファイル

を持っていないですとstart_clearこの関数の4のアリティが、アリティだその3である理由はundefエラー:

exited: {bad_return, {{tunnel_app,start,[normal,[]]}, {'EXIT', {undef, [{cowboy,start_clear, [my_http_listener,100, [{port,8080}],

...あなたは、パラメータを削除する必要があり、「100」

これはおそらく、カウボーイの以前のバージョンからあったに違いない

+0

こんにちはJuanjoさん、答えは "あなたのアプリにビルドツールを使用していない場合は、erlang.mkを見てください。自動的にアプリケーションファイルが作成されます。"私はerlang.mkを持っています - なぜこれが.appファイルを作成しないのでしょうか? – quantumpotato

+0

"make run"の後のエラーの一番上の行にあるように、erlang.mk:24:GNU Make 4以降にアップグレードしてください... "Make。3.81と3.82は推奨されていないため警告です。あなたがそれをアップグレードし、それが動作するかどうかを確認することができます –

+0

あなたが4のarityを持つcowboy:start_clearを呼び出していますが、この関数のアリティが3であるtunnel_app.erlモジュール:undef error:{bad_return、 {{tunnel_app、開始、[通常、[]]}、{ 'EXIT' {undefを、 [{カウボーイ、start_clear、 [my_http_listener、100、 [{ポート、8080}]、... パラメータ "100"を削除する必要があります –

関連する問題