【发布时间】:2021-02-14 09:27:55
【问题描述】:
我有一个简单的独立模块,可以产生:
长生不老药 impl_bad.ex ** (ArgumentError) 参数错误在 iex 中:
=> iex Erlang/OTP 23 [erts-11.1] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe] 交互式 Elixir (1.9.4) - 按 Ctrl+C 退出(键入 h() ENTER 寻求帮助) iex(1)> c“impl_bad.ex” == 文件 impl_bad.ex 中的编译错误 == ** (ArgumentError) 参数错误 ** (ArgumentError) 参数错误代码:
defmodule ImplBad 做 def run_addition_problems(aconfig) 做 do_addition_problems(aconfig) 结尾 结尾将这 5 行代码单独放在一个文件中。
我知道 do_addition_problems() 没有 存在,但我预计会出现未定义的错误 带有行号。
我从一个项目文件中提取了这段代码,其中 do_addition_problems() 确实存在。
我希望从 编译器。我不得不从 一个大约 1k LOC 的模块来查明这个问题。
这是 Elixir 1.9.4 的问题吗?
【问题讨论】:
-
看起来确实是 Elixir 版本的问题。当我在 Elixir
1.9.2本地尝试时,它给了我ArgumentError就像你的一样。当我尝试1.9.4-opt-21时,它给出了一个不错的(CompileError) t.ex:3: undefined function do_addition_problems/1。我使用asdf工具在elixir 的版本之间进行切换。所以它必须是在 1.9.2 和 1.9.4 之间的编译器中修复的东西。 -
虽然如果我这样做
docker run -it --rm -v "$PWD"/t.ex:/tmp/t.ex elixir:1.9.2-slim elixir /tmp/t.ex,我会收到一个很好的错误消息,与elixir:1.9.4-slim相同。也许是关于 OTP 版本而不是 Elixir。
标签: elixir