2017-01-29 1 views
0

Das war letzte Woche in Ordnung. Ich würde öffnenErlang Shell hat aufgehört meine Module zu laden

cd myprojectdir erl (erlang shell). c(room). {ok, R} = room:go().

dann könnte ich gen_server Nachrichten an R zu schicken, die Interaktion mit meinem Raummodul.

Ich begann in einem Cowboy-Routing-Zweig. Ich sah, dass die Dinge gut funktionierten, als ich es heute ansah, bekam ich Kompilierungsfehler. Also rollte ich zurück zu meinem Meisterzweig. Immer noch Fehler in der Shell, sogar ein paar Commits zurückrollen, hm.

Wenn ich versuche, den Raum aufzurufen: go(), werden die anderen Module als undef gedruckt. Wenn ich sie nacheinander kompiliere, funktioniert room: go().

Zimmer startet Tische, Tische Kick-off-Uhren, Sitze und Spiel, Spiel tritt off Board und Aktionen.

https://github.com/quantumproductions/tunnel

2> c(game). 
{ok,game} 
3> game:go(). 
** exception exit: undef 
    in function board:go/0 
     called as board:go() 
    in call from game:init/1 (game.erl, line 57) 
    in call from gen_server:init_it/6 (gen_server.erl, line 328) 
    in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 247) 
4> c(board). 
{ok,board} 
5> game:go(). 
** exception exit: undef 
    in function actions:go/0 
     called as actions:go() 
    in call from game:init/1 (game.erl, line 58) 
    in call from gen_server:init_it/6 (gen_server.erl, line 328) 
    in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 247) 
6> c(actions). 
{ok,actions} 
7> actions:go(). 
{ok,<0.93.0>} 
8> game:go(). 
{ok,<0.95.0>} 
9> c(room). 
{ok,room} 
10> room:go(). 
** exception exit: undef 
    in function table:go/0 
     called as table:go() 
    in call from room:tablePids/2 (room.erl, line 33) 
    in call from room:init/1 (room.erl, line 80) 
    in call from gen_server:init_it/6 (gen_server.erl, line 328) 
    in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 247) 
11> c(table). 
{ok,table} 
12> room:go(). 
** exception exit: undef 
    in function clock:go/0 
     called as clock:go() 
    in call from table:init/1 (table.erl, line 7) 
    in call from gen_server:init_it/6 (gen_server.erl, line 328) 
    in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 247) 
13> c(clock). 
{ok,clock} 
14> room:go(). 
** exception exit: undef 
    in function seats:go/0 
     called as seats:go() 
    in call from table:init/1 (table.erl, line 8) 
    in call from gen_server:init_it/6 (gen_server.erl, line 328) 
    in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 247) 
15> c(seats). 
{ok,seats} 
16> room:go(). 
** exception exit: undef 
    in function hall:go/0 
     called as hall:go() 
    in call from room:init/1 (room.erl, line 81) 
    in call from gen_server:init_it/6 (gen_server.erl, line 328) 
    in call from proc_lib:init_p_do_apply/3 (proc_lib.erl, line 247) 
17> c(hall). 
{ok,hall} 
18> room:go(). 
{ok,<0.159.0>} 
19> 
=ERROR REPORT==== 29-Jan-2017::17:37:45 === 
Error in process <0.169.0> with exit value: 
{undef,[{s,s,[<0.159.0>,update],[]}]} 

=ERROR REPORT==== 29-Jan-2017::17:37:46 === 
Error in process <0.170.0> with exit value: 
{undef,[{s,s,[<0.159.0>,update],[]}]} 

=ERROR REPORT==== 29-Jan-2017::17:37:47 === 
Error in process <0.171.0> with exit value: 
{undef,[{s,s,[<0.159.0>,update],[]}]} 

=ERROR REPORT==== 29-Jan-2017::17:37:48 === 
Error in process <0.172.0> with exit value: 
{undef,[{s,s,[<0.159.0>,update],[]}]} 

=ERROR REPORT==== 29-Jan-2017::17:37:49 === 
Error in process <0.173.0> with exit value: 
{undef,[{s,s,[<0.159.0>,update],[]}]} 

=ERROR REPORT==== 29-Jan-2017::17:37:50 === 
Error in process <0.174.0> with exit value: 
{undef,[{s,s,[<0.159.0>,update],[]}]} 

Jeder gehen() Funktion ist nur eine Bequemlichkeit für

go() -> 
    gen_server:start_link(?MODULE, [], []). 

Versionierung:

Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] 

Eshell V8.2 (abort with ^G) 

Was ist passiert?

EDIT:

s: s ist von meiner Abkürzung Modul

-module(s). 
-export([s/2]). 
% Shortcuts. 

% Send 
s(Pid, Message) -> 
    gen_server:call(Pid, Message). 

Die Aktualisierungsnachricht wird auf einem Timer im Zimmer geschickt, das Update auf jede der Tabellen zu senden versucht.

EDIT:

Ich habe NULL-Code geändert. Folgendes passiert, wenn ich jetzt laufe .. liegt das daran, dass ich bereits die * .beam-Dateien habe?

=ERROR REPORT==== 29-Jan-2017::17:50:19 === 
Error in process <0.200.0> with exit value: 
{undef,[{s,s,[<0.59.0>,update],[]}]} 

BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded 
     (v)ersion (k)ill (D)b-tables (d)istribution 
^C~/tunnel:.ls 
actions.beam clock.beam hall.beam s.erl  table.erl 
actions.erl clock.erl hall.erl seats.beam timer.erl 
board.beam game.beam room.beam seats.erl 
board.erl game.erl room.erl table.beam 
~/tunnel:.erl 
Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] 

Eshell V8.2 (abort with ^G) 
1> c(board). 
{ok,board} 
2> c(all). 
all.erl: no such file or directory 
error 
3> c(). 
** exception error: undefined shell command c/0 
4> c(room). 
{ok,room} 
5> c(s). 
{ok,s} 
6> room:go(). 
{ok,<0.96.0>} 
7> 
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded 
     (v)ersion (k)ill (D)b-tables (d)istribution 
^C~/tunnel:.erl 
Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] 

Eshell V8.2 (abort with ^G) 
1> c(room). 
{ok,room} 
2> room:go(). 
{ok,<0.72.0>} 
3> room:test(). 
    All 4 tests passed. 
ok 
4> 
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded 
     (v)ersion (k)ill (D)b-tables (d)istribution 
^C~/tunnel:. 
~/tunnel:.erl 
Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] 

Eshell V8.2 (abort with ^G) 
1> c(room). 
{ok,room} 
2> room:go(). 
{ok,<0.72.0>} 
3> room:test(). 
    All 4 tests passed. 
ok 
4> 

Antwort

1

Es klingt für mich wie Ihr Modul s nicht im ersten Fall kompiliert wurde, vor allem geben wir Sie kompilieren es in Ihrem bearbeiten sehen können, wo der Code funktioniert.

Der Fehler

=ERROR REPORT==== 29-Jan-2017::17:37:50 === 
Error in process <0.174.0> with exit value: 
{undef,[{s,s,[<0.159.0>,update],[]}]} 

sagen der Anruf s und Funktion mit den Argumenten s Modul <0.159.0> und update mit undef fehlgeschlagen.

Erlang lässt Sie ein Modul kompilieren, das Aufrufe zu undefined Funktionen hat, weshalb wir tools like xref haben.

Wenn Sie kein eigenes Build-Tool wie mix, rebar3 oder erlang.mk verwenden würde ich Sie tun beraten.

Verwandte Themen