[英]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来格式化输出。
我可以通过添加解决这个问题:eex
到extra_applications
在mix.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.