无法运行任何混合命令-**(FunctionClauseError)IO.chardata_to_string / 1中没有匹配的功能子句

时间:2019-03-07 00:06:11

标签: elixir phoenix-framework

我在本地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

1 个答案:

答案 0 :(得分:2)

问题似乎是nil值正在传递给IO.chardata_to_string。如果您运行iex并输入:

IO.chardata_to_string(nil)

您将收到相同的错误。现在,如果您输入以下内容:

IO.chardata_to_string("my string")

您将获得预期的结果。

没有看到您的代码,我不能说为什么您要获取传递到IO.chardata_to_string的nil值,但这似乎是问题所在。

我希望有帮助。

干杯!