elixir - dialyzer 无法识别 elixir 函数并出现错误:0:unknown_function
问题描述
我在我的计算机上使用 elixir 和 erlang otp 21 安装了 elixir 1.7.2 asdf
。在我的项目混合文件中,我按照dilyzer 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 预编译的版本引起的。当 dialyzer 尝试创建 plt 时,找不到使用 otp-21 编译的 elixir 1.7.2。
要解决此问题,请按照asdf/elixir github上的说明安装使用 otp-21 预编译的 elixir - 感谢我找到解决方案的 elixir slack
asdf install elixir 1.7.2-otp-21
命令安装用 otp-21 预编译的 elixir。
现在一切都应该按预期工作
推荐阅读
- jenkins - 通过 Jenkins 使用 signtool.exe
- c# - c# 克隆一个对象列表
- javascript - 为什么我的脚本不会在我的课堂上附加 ul?
- shell - 即使对于 var=value,tcsh shell 脚本也会给出“找不到命令”
- python - 在 Azure SQL 数据库中插入新数据后接收确认
- python - Django - 如何使锚点更改 HTML 列表
- c++ - 如何在使用 opencascade 进行曲面细分后焊接网格
- python - 行中具有不同值的重复 ID
- python - 将变量从字符串传递给函数(python)
- sql-server - 从文件系统执行 SSIS 包