我在本地Mac上具有完全相同的代码和版本,并且可以很好地运行mix命令。为了确定,我提取了项目的全新副本。没有_build,deps或tmp目录。此错误不会给问题提供任何信息。可能会发生什么,或者我可以寻找解决方案?
问题出在Ubuntu 18.04 LTS上。我尝试了多个erlang / elixir版本,所有结果在下面的输出相同。
root@instance-1:/srv/zipbooks/phoenix-api# elixir -v
Erlang/OTP 21 [erts-10.2.5] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]
Elixir 1.8.1 (compiled with Erlang/OTP 21)
root@instance-1:/srv/zipbooks/phoenix-api# mix compile
** (FunctionClauseError) no function clause matching in IO.chardata_to_string/1
The following arguments were given to IO.chardata_to_string/1:
# 1
nil
Attempted function clauses (showing 2 out of 2):
def chardata_to_string(string) when is_binary(string)
def chardata_to_string(list) when is_list(list)
(elixir) lib/io.ex:461: IO.chardata_to_string/1
(elixir) lib/path.ex:512: Path.join/2
(stdlib) erl_eval.erl:680: :erl_eval.do_apply/6
(stdlib) erl_eval.erl:888: :erl_eval.expr_list/6
(stdlib) erl_eval.erl:240: :erl_eval.expr/5
(stdlib) erl_eval.erl:232: :erl_eval.expr/5
(stdlib) erl_eval.erl:233: :erl_eval.expr/5
(stdlib) erl_eval.erl:888: :erl_eval.expr_list/6
答案 0 :(得分:2)
问题似乎是nil
值正在传递给IO.chardata_to_string
。如果您运行iex
并输入:
IO.chardata_to_string(nil)
您将收到相同的错误。现在,如果您输入以下内容:
IO.chardata_to_string("my string")
您将获得预期的结果。
没有看到您的代码,我不能说为什么您要获取传递到IO.chardata_to_string的nil
值,但这似乎是问题所在。
我希望有帮助。
干杯!