关机:无法启动子:在凤凰城/药剂
MyApp.Endpoint在我的凤凰应用程序我有一个服务器上的这个错误,在当地当我跑步凤凰控制台:关机:无法启动子:在凤凰城/药剂
[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....
什么是关于?如何解决它?
UPDATE:
下面是完整的混淆堆栈跟踪:
$ ./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
我创造了释放它通过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
这意味着,你可能开始MyApp.Endpoint
手动地方。在你的lib/my_app.ex
里面应该有这样一段代码。
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]),
]
该代码表示开始MyApp
需要开始Endpoint
。监督树对订单非常严格。他们需要监视已启动的进程,因此如果其他人启动该进程,则会返回错误。这会关闭MyApp
和整个虚拟机,因为没有主应用程序就无法运行它。尝试寻找代码中的某个地方的Endpoint.start
调用。
你和我的文件有什么不同? –
错误是由我的本地机器和服务器造成的。 –
没有什么区别,我只是把它列入解释监督。你有没有检查你的代码来调用'Endpoint.start'?如果这不是问题,你能分享回购? – tkowal
你可以发布你的监督树的代码? –
@PawełObrok,那是哪里? –
它应该在'lib/my_app.ex' – tkowal