Elixir Phoenix关闭:未能启动孩子

时间:2016-08-03 16:52:49

标签: erlang elixir phoenix-framework

我在生产模式下启动应用时出现以下错误。一切都在开发方面正常工作,可以在生产应用程序上进行迁移,编译和发布而不会出现问题,但在运行时,它会在启动时崩溃。 我确信这是我遗失的非常明显的事情。我正在运行Erlang 19和Elixir 1.3.2。

  

17:42:52.768 [info]申请课程退出:   Curriculum.start(:n​​ormal,[])返回错误:shutdown:failed to   启动子:Curriculum.Endpoint       **(EXIT)shutdown:无法启动子进程:Phoenix.Endpoint.Server           **(退出)引发了一个例外:               **(FunctionClauseError)System.get_env / 1中没有匹配的函数子句                   (elixir)lib / system.ex:358:System.get_env(4000)                   (phoenix)lib / phoenix / endpoint / server.ex:34:Phoenix.Endpoint.Server.to_port / 1                   (phoenix)lib / phoenix / endpoint / server.ex:28:Phoenix.Endpoint.Server.default / 3                   (凤凰)lib / phoenix / endpoint / server.ex:17:Phoenix.Endpoint.Server.init / 1中的匿名fn / 5                   (elixir)lib / enum.ex:1623:Enum。" -reduce / 3-lists ^ foldl / 2-0 - " / 3                   (phoenix)lib / phoenix / endpoint / server.ex:15:Fhoenix:Endpoint.Server.init / 1                   (stdlib)supervisor.erl:294 :: supervisor.init / 1                   (stdlib)gen_server.erl:328 :: gen_server.init_it / 6 {"内核pid   终止",application_controller," {application_start_failure,课程,{{关机,{failed_to_start_child,' Elixir.Curriculum.Endpoint' {关机,{failed_to_start_child,' Elixir.Phoenix。 Endpoint.Server' {function_clause,[{' Elixir.System',get_env,[4000],[{文件,\" LIB / system.ex \"}, {线,358}]},{' Elixir.Phoenix.Endpoint.Server',to_port,1,[{文件,\" LIB /凤凰/端点/ server.ex \&#34 ;},{线,34}]},{' Elixir.Phoenix.Endpoint.Server',默认情况下,如图3所示,[{文件,\" LIB /凤凰/端点/ server.ex \ "},{线,28}]},{' Elixir.Phoenix.Endpoint.Server'' -init / 1-乐趣0 - ',5, [{文件,\" LIB /凤凰/端点/ server.ex \"},{线,17}]},{' Elixir.Enum'' - 减少/ 3-列表^与foldl / 2-0 - ',3,[{文件,\" LIB / enum.ex \"},{线,1623}]},{& #39; Elixir.Phoenix.Endpoint.Server'在初始化,1,[{文件,\" LIB /凤凰/端点/ server.ex \"},{线,15}]} {主管,INIT,1,[{文件,\" supervisor.erl \"},{线,294}]},{gen_server,init_it 6,[{文件,\" gen_server.erl \#34&;},{线,328}]}]}}}}},{' Elixir.Curriculum',启动[正常,[]]}}}"}

Prod.exs文件内容

http: [port: {:system, 4000}],url: [host: "example.com"],cache_static_manifest: "priv/static/manifest.json",server: true
config :phoenix, :serve_endpoints, true

import_config "prod.secret.exs"

1 个答案:

答案 0 :(得分:3)

portconfig/prod.exs的值是错误的。应该是:

port: 4000

始终在端口4000上运行,或者:

port: {:system, "PORT"}

从环境变量PORT读取端口(您可以将名称更改为任何其他字符串)。