我在生产模式下启动应用时出现以下错误。一切都在开发方面正常工作,可以在生产应用程序上进行迁移,编译和发布而不会出现问题,但在运行时,它会在启动时崩溃。 我确信这是我遗失的非常明显的事情。我正在运行Erlang 19和Elixir 1.3.2。
17:42:52.768 [info]申请课程退出: Curriculum.start(:normal,[])返回错误: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"
答案 0 :(得分:3)
port
中config/prod.exs
的值是错误的。应该是:
port: 4000
始终在端口4000上运行,或者:
port: {:system, "PORT"}
从环境变量PORT
读取端口(您可以将名称更改为任何其他字符串)。