代码之家  ›  专栏  ›  技术社区  ›  Sigu Magwa

透析器无法识别长生不老药功能,错误:0:未知的功能

  •  1
  • Sigu Magwa  · 技术社区  · 6 年前

    我的电脑上安装了Elixir1.7.2,使用 asdf ,elixir和erlang otp 21 dialyzer github

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

    mix dialyzer

    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
    

    然后所有操作都会失败,并出现错误,包括elixir内置的函数,如 System.get_env/1

    :0:unknown_function
    Function System.get_env/1 does not exist.
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Sigu Magwa    6 年前

    结果表明,错误是由我安装 elixir ,asdf使用一个用erlang otp-20预编译的版本。当透析器试图创建plt时,它找不到用otp-21编译的elixir 1.7.2。

    asdf/elixir github -多亏了我找到解决办法的长生不老药

    asdf install elixir 1.7.2-otp-21
    

    现在一切都应该按预期进行