将 Elixir 升级到 1 后收到 Logger.ErrorHandler 崩溃错误。1.x

Receiving Logger.ErrorHandler crash error after upgrading Elixir to 1.1.x

在 Mac OSX 10.10.5 上,执行以下操作将 Elixir 从 v1.0.x 升级到 v1.1.x 后:

$ brew update
$ brew upgrade elixir

尝试 运行 任何应用程序或启动 iex 时出现以下(已编辑长度)错误:

=ERROR REPORT==== 27-Sep-2015::19:27:32 ===
** gen_event handler 'Elixir.Logger.ErrorHandler' crashed.
** Was installed in error_logger
** Last event was: <snip>
** When handler state == <snip>
** Reason == <snip>
** (ArgumentError) argument error
    (elixir) lib/code.ex:363: Code.require_file/2

在下面回答!

当 Elixir app/binary 运行 使用与编译 Elixir 不同的 Erlang 版本时,这似乎会发生。在这种情况下,代码是 运行 使用 Erlang 17,但使用 Erlang 18 编译。您可以在 Github issue.

中阅读更多内容

可以通过确保 运行 和编译 Erlang 版本匹配来补救。在我 OSX 的特殊情况下,我安装了多个版本的 Erlang(均通过 Homebrew 和 Erlang Solutions installer)。

从头开始:

# (Optional) To remove the Erlang Solutions installed Erlang
sudo rm -rf /usr/local/lib/erlang/
# To remove all homebrew-managed versions of Elixir
brew uninstall --force elixir
# To remove all homebrew-managed versions of Erlang
brew uninstall --force erlang

要重新安装:

brew install erlang
brew install elixir