Phoenix:无法编译依赖项:ranch

Phoenix: Could not compile dependency :ranch

背景

我使用 mix phx.new my_app --no-ecto 创建了一个项目,一切看起来都很好。但是我无法 运行 创建的项目。

错误

当我执行 mix phx.server 时(在 运行ning mix deps.get) 之后,我得到以下错误:

===> Compiling ranch
===> Command ' OTP' not found in namespace bare
** (Mix) Could not compile dependency :ranch, "/home/user/.asdf/installs/elixir/1.7.3-otp-21/.mix/rebar3 bare compile --paths "/home/user/Workspace/exercises/islands_interface/_build/dev/lib/*/ebin"" command failed. You can recompile this dependency with "mix deps.compile ranch", update it with "mix deps.update ranch" or clean it with "mix deps.clean ranch"

OS 和语言信息

Distributor ID: Ubuntu
Description:    Ubuntu 19.04
Release:    19.04
Codename:   disco

elixir         1.7.3-otp-21
erlang         21.1    

我做错了什么?

我刚刚发现错误是什么。

这是项目的绝对路径:

/home/user/Workspace/Functional Web Development with Elixir, OTP, and Phoenix/islands_interface

原来,phx.server 出错了 因为 它在文件夹 /Functional Web Development with Elixir, OTP, and Phoenix/ 中。原来错误消息中“OTP”中的 space 来自文件夹的名称。

为了证明我的理论,我在 /home/user/Workspace/ 下创建了一个名为 test 的项目。一切都很完美。

进一步调查揭示了问题的根源。 Phoenix 依赖项 rebar3 存在名称中包含逗号的文件夹的错误。

https://elixirforum.com/t/phoenix-could-not-compile-dependency-ranch/22939/16?u=fl4m3ph03n1x