диализатор не может распознать функции эликсира с ошибкой: 0: unknown_function - PullRequest
0 голосов
/ 05 октября 2018

У меня на компьютере установлен elixir 1.7.2 с использованием asdf, elixir и erlang otp 21. В моем файле микса проекта я добавил кандидат на последний релиз dialyzer, как указано в инструкции dialyzer github

{:dialyxir, "~> 1.0.0-rc.3", only: [:dev], runtime: false} 

Когда я запускаю mix dialyzer, я получаю пару ошибок при создании plt среди них:

Could not get Core Erlang code for: /home/sigu/.asdf/installs/elixir/1.7.2/lib/elixir/ebin/elixir_parser.beam

Recompile with +debug_info or analyze starting from source code  Could not get Core Erlang code for: /home/sigu/.asdf/installs/elixir/1.7.2/lib/logger/ebin/Elixir.Logger.ErlangHandler.beam

Затем все с ошибками, включая встроенные функции эликсиракак System.get_env/1

:0:unknown_function
Function System.get_env/1 does not exist.

1 Ответ

0 голосов
/ 05 октября 2018

Оказывается, ошибка вызвана тем, что когда я установил elixir, asdf использует версию, предварительно скомпилированную с erlang otp-20.Когда диализатор пытается создать plt, он не может найти elixir 1.7.2, скомпилированный с otp-21.

Чтобы обойти это, установите elixir, предварительно скомпилированный с otp-21, как указано в asdf / elixirgithub - Благодаря слабому эликсиру, где я нашел решение

asdf install elixir 1.7.2-otp-21

Команда устанавливает elixir, предварительно скомпилированный с otp-21.

Теперь все должно работать как положено

...