繁体   English   中英

Elixir应用程序在iex中运行,但需要添加:eex作为依赖项以作为发布运行

[英]Elixir app runs in iex, but need to add :eex as a dependency to run as a release

我创建了一个使用Plug.Debugger的简单Cowboy / Plug应用程序。

这些是我在mix.exs运行时依赖mix.exs

extra_applications: [:cowboy, :plug, :logger]

我通过mix release使用Distillery来产生释放。

iex -S mix和运行发布都可以很好地启动应用程序,但是当发生错误时它们会有所不同。 对于iex会话, Debugger正确处理错误,但是对于发布,我收到以下错误:

** (UndefinedFunctionError) function EEx.Engine.fetch_assign!/2 is undefined (module EEx.Engine is not available)

我假设Plug.Debugger使用EEx来格式化输出。

我可以通过添加解决这个问题:eexextra_applicationsmix.exs ,重建的释放和重新运行。

为什么:eex需要作为依赖项列出作为发布的一部分运行,但不是从iex运行时?

Elixir运行时向OTP 添加了一些内部应用程序

 @elixir_apps ~w(eex elixir ex_unit iex logger mix)a

还可以从iex控制台等执行Logger.log 。由Distillery构建的OTP运行时不包括这些应用程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM