shutdown:无法启动子进程:Phoenix / Elixir中的MyApp.Endpoint

时间:2016-05-13 02:13:18

标签: elixir phoenix-framework

在我的凤凰应用程序中,当我运行Phoenix控制台时,我在服务器和本地出现此错误:

$img = "<img  width=\"$width \" height=\"$height\" src=\"data:image/$type;base64,$base64\" alt =\"image\"/>";
那是什么意思?如何解决?

更新

这里是完整的混淆堆栈跟踪:

[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....

我通过$ ./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 创建了它。

UPDATE2:

mix clean, compile, release

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并发现这是因为我忘记了指定PORT环境变量...

PORT=4000 bin/my_app foreground

答案 1 :(得分:1)

当我意识到我的phoenix应用程序试图在其端口上运行另一个应用程序时,我遇到了这个问题。确保您没有在试图启动该应用程序的端口上运行该应用程序。

答案 2 :(得分:0)

这意味着您可能在某处手动启动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和整个VM,因为没有主应用程序运行它是没有意义的。尝试在代码中的某处查找Endpoint.start次调用。