【问题标题】:Elixir phoenix web application broke after pushing to herokuElixir phoenix Web 应用程序在推送到 Heroku 后崩溃
【发布时间】:2018-01-08 17:49:15
【问题描述】:

在尝试将我的 elixir phoenix Web 应用程序推送到 heroku 时,我遇到了很多问题,需要很长时间才能解决,但在我终于解决之后......我的应用程序将不再启动!

我对灵药和凤凰甚至heroku还是很陌生,所以这对我来说真的是个谜。

运行 mix phoenix.server 时,这是我的输出:

** (UndefinedFunctionError) function Phoenix.Template.hash/2 is undefined or private. Did you mean one of:

  * hash/1

(phoenix) Phoenix.Template.hash("web/templates/error", "*")
web/views/error_view.ex:1: Dashboard.ErrorView.__phoenix_recompile__?/0
(elixir) lib/stream.ex:429: anonymous fn/4 in Stream.filter/2
(elixir) lib/enum.ex:3161: Enumerable.List.reduce/3
(elixir) lib/stream.ex:1433: Enumerable.Stream.do_each/4
(elixir) lib/enum.ex:1823: Enum.reverse/1
(elixir) lib/enum.ex:2581: Enum.to_list/1
(phoenix) lib/mix/tasks/compile.phoenix.ex:13: Mix.Tasks.Compile.Phoenix.run/1
(mix) lib/mix/task.ex:301: Mix.Task.run_task/3
(elixir) lib/enum.ex:1255: Enum."-map/2-lists^map/1-0-"/2
(mix) lib/mix/tasks/compile.all.ex:19: anonymous fn/1 in Mix.Tasks.Compile.All.run/1
(mix) lib/mix/tasks/compile.all.ex:37: Mix.Tasks.Compile.All.with_logger_app/1
(mix) lib/mix/task.ex:301: Mix.Task.run_task/3
(mix) lib/mix/tasks/compile.ex:85: Mix.Tasks.Compile.run/1
(mix) lib/mix/task.ex:301: Mix.Task.run_task/3
(mix) lib/mix/tasks/app.start.ex:50: Mix.Tasks.App.Start.run/1
(mix) lib/mix/task.ex:301: Mix.Task.run_task/3
(mix) lib/mix/tasks/run.ex:86: Mix.Tasks.Run.run/5
(mix) lib/mix/tasks/run.ex:54: Mix.Tasks.Run.run/1

现在,我真的不明白这个问题是从哪里来的,这对我来说似乎很困惑,我希望得到一些帮助。

我什至不知道要共享哪些文件,因此您可能可以获得更多信息,但我愿意在我的项目中发布任何代码。

【问题讨论】:

  • 看起来 Heroku 正在安装旧版本的 Phoenix,它没有 Phoenix.Template.hash/2。如果您克隆原始 repo 并运行 mix deps.get && mix phoenix.server,该应用程序是否可以工作?
  • 不,克隆原始存储库并运行 mix deps.get && mix phoenix.server 不起作用。但是,我现在遇到了另一个错误:== Compilation error in file lib/dashboard/endpoint.ex == ** (CompileError) lib/dashboard/endpoint.ex:1: inlined function current_time/0 undefined (stdlib) lists.erl:1338: :lists.foreach/2 (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6 (elixir) lib/kernel/parallel_compiler.ex:121: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/1

标签: heroku npm elixir phoenix-framework elixir-mix


【解决方案1】:

我遇到了完全相同的问题。在我的情况下,这是由于糟糕的长生不老药和 erlang 版本。我通过安装 erlang 18.2 和 elixir 1.2.3 解决了这个问题

我建议为 erlang 和 elixir 使用版本管理器(我使用了 kerl 和 envex)

【讨论】:

    【解决方案2】:

    我在本地遇到了同样的问题,如果您正在处理多个分支(具有多个 phoenix 版本),请确保重建依赖项,这可能就是问题所在。

    【讨论】:

    • 这为我解决了这个问题:mix deps.clean --all && mix deps.get && mix deps.compile
    猜你喜欢
    • 2012-09-24
    • 2013-08-09
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2015-10-11
    • 2014-06-26
    • 2015-12-29
    相关资源
    最近更新 更多