2016-05-13 6 views
1

In meinem Phoenix App Ich habe diesen Fehler auf einem Server und lokal, wenn ich die Phoenix Konsole renne:Abschaltung: failed Kind zu starten: MyApp.Endpoint in Phoenix/Elixir

[info] Application MyApp exited: MyApp.start(:normal, []) returned an error: shutdown: failed to start child: MyApp.Endpoint 
    ** (EXIT) already started: #PID<0.1012.0> 
{"Kernel pid terminated",application_controller,"{application_start_failure,MyApp,{{shutdown, 
{failed_to_start_child,'Elixir.MyApp.Endpoint', 
{already_started,<0.1012.0>}}},{'Elixir.MyApp',start,[normal,[]]}}}"} 

Crash dump is being written to: erl_crash.dump...done 
Kernel pid terminated (application_controller) ({application_start_failure,MyApp,{{shutdown,{failed_to_start_child,'Elixir.MyApp.Endpoint',{already_started,<0.1012.0>}}},{'Elixir.MyApp',start,[no.... 

Was ist das über ? Wie man es repariert?

UPDATE:

Hier ist der vollständige verschleierte Stack-Trace:

$ ./bin/my_app console  
Using /home/my_name/my_app_com_webite2/releases/0.0.2/my_app.sh 
Exec: /home/my_name/my_app_com_webite2/erts-7.3.1/bin/erlexec -boot /home/my_name/my_app_com_webite2/releases/0.0.2/my_app -mode embedded -config /home/my_name/my_app_com_webite2/running-config/sys.config -boot_var ERTS_LIB_DIR /home/my_name/my_app_com_webite2/erts-7.3.1/../lib -env ERL_LIBS /home/my_name/my_app_com_webite2/lib -pa /home/my_name/my_app_com_webite2/lib/my_app-0.0.2/consolidated -args_file /home/my_name/my_app_com_webite2/running-config/vm.args -user Elixir.IEx.CLI -extra --no-halt +iex -- console 
Root: /home/my_name/my_app_com_webite2 
/home/my_name/my_app_com_webite2 
Erlang/OTP 18 [erts-7.3.1] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] 

[info] Application my_app exited: my_app.start(:normal, []) returned an error: shutdown: failed to start child: my_app.Endpoint 
    ** (EXIT) already started: #PID<0.1012.0> 
{"Kernel pid terminated",application_controller,"{application_start_failure,my_app,{{shutdown,{failed_to_start_child,'Elixir.my_app.Endpoint',{already_started,<0.1012.0>}}},{'Elixir.my_app',start,[normal,[]]}}}"} 

Crash dump is being written to: erl_crash.dump...done 
Kernel pid terminated (application_controller) ({application_start_failure,my_app,{{shutdown,{failed_to_start_child,'Elixir.my_app.Endpoint',{already_started,<0.1012.0>}}},{'Elixir.my_app',start,[no 

Ich habe die Freigabe durch mix clean, compile, release.

UPDATE2:

# lib/my_app 
defmodule MyApp123 do 
    use Application 

    # See http://elixir-lang.org/docs/stable/elixir/Application.html 
    # for more information on OTP Applications 
    def start(_type, _args) do 
    import Supervisor.Spec, warn: false 

    children = [ 
     supervisor(MyApp123.Endpoint, []), 
     supervisor(MyApp123.Repo, []), 
    ] 


    # See http://elixir-lang.org/docs/stable/elixir/Supervisor.html 
    # for other strategies and supported options 
    opts = [strategy: :one_for_one, name: MyApp123.Supervisor] 
    Supervisor.start_link(children, opts) 
    end 

    # Tell Phoenix to update the endpoint configuration 
    # whenever the application is updated. 
    def config_change(changed, _new, removed) do 
    MyApp123.Endpoint.config_change(changed, removed) 
    :ok 
    end 
end 
+0

Können Sie den Code für Ihren Überwachungsbaum posten? –

+0

@ PawełObrok, wo ist das? –

+0

Es sollte in 'lib/my_app.ex' sein – tkowal

Antwort

0

Dies bedeutet, dass Sie wahrscheinlich MyApp.Endpoint manuell irgendwo gestartet. In Ihrem lib/my_app.ex sollte ein Code wie dieser sein.

children = [ 
    # Start the endpoint when the application starts 
    supervisor(MyApp.Endpoint, []), 
    # Start the Ecto repository 
    supervisor(MyApp.Repo, []), 
    # Here you could define other workers and supervisors as children 
    # worker(MyApp.Worker, [arg1, arg2, arg3]), 
] 

Dies bedeutet, dass Code MyApp Start Endpoint beginnend erfordert. Aufsichtsbäume sind sehr streng in Bezug auf die Reihenfolge. Sie müssen gestartete Prozesse überwachen, sodass sie einen Fehler zurückgeben, wenn jemand anders den Prozess gestartet hat. Dadurch wird die MyApp und die gesamte VM heruntergefahren, da es keinen Sinn macht, sie ohne Haupt-App auszuführen. Versuchen Sie, in Ihrem Code nach Endpoint.start Anrufe zu suchen.

+0

Was ist der Unterschied zwischen Ihrer und meiner Datei? –

+0

Der Fehler wird sowohl auf meinem lokalen Computer als auch auf dem Server verursacht. –

+0

gibt es keinen Unterschied, ich habe es nur hinzugefügt, um die Überwachung zu erklären. Haben Sie Ihren Code für Anrufe zu "Endpoint.start" überprüft? Wenn dies nicht das Problem ist, können Sie das Repo teilen? – tkowal

Verwandte Themen