[英]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.