透析器无法识别长生不老药功能,错误为:0:unknown_function



我的计算机上安装了使用asdf的elixir 1.7.2,elixir和erlang otp 21。在我的项目混合文件中,我按照透析器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.

事实证明,错误是由以下事实引起的:当我安装elixir时,asdf 使用使用 erlang otp-20 预编译的版本。当透析器尝试创建 plt 时,它找不到使用 otp-21 编译的长生不老药 1.7.2。

要解决此问题,请按照 asdf/elixir github 上的说明安装 使用otp-21预编译的长生不老药 - 感谢我找到解决方案的长生不老药松弛

asdf install elixir 1.7.2-otp-21

命令安装用otp-21预编译的长生不老药。

现在一切都应该按预期工作

相关内容

最新更新