我刚刚克隆了 Elixir/Phoenix 项目,但无法运行任何混合任务。我不断收到elixir 1.5.1 notinstalled
。但我不明白,因为我安装了 Elixir。如果我从项目外部的任何其他文件夹运行elixir --version
,我可以看到我正在 Elixir 1.5.1 上运行。就在这个项目中,我不断收到未安装 elixir 的错误。
可能是什么问题? mix.exs 文件的内容如下所示: 项目部分
def project do
[
app: :real_world,
version: "0.0.1",
elixir: "~> 1.5",
elixirc_paths: elixirc_paths(Mix.env),
compilers: [:phoenix, :gettext] ++ Mix.compilers,
start_permanent: Mix.env == :prod,
aliases: aliases(),
deps: deps(),
test_coverage: [tool: ExCoveralls],
]
end
以及部门部分:
defp deps do
[
{:phoenix, "~> 1.3.0"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.2"},
{:postgrex, "~> 0.13.3"},
{:gettext, "~> 0.11"},
{:proper_case, "~> 1.0.0"},
{:cowboy, "~> 1.1"},
{:comeonin, "~> 3.2"},
{:guardian, "~> 0.14.5"},
{:excoveralls, "~> 0.7", only: [:dev, :test]},
{:credo, "~> 0.8.5", only: [:dev, :test]},
{:ex_machina, "~> 2.0", only: :test},
{:plug, "~> 1.0"},
{:corsica, "~> 1.0"}
]
end
最佳答案
好的,不管怎样,我都会在这里发布答案。
如果 elixir 版本管理器文件最初提交到此存储库(由代码所有者)和代码使用者安装了相同的版本管理器,但没有在此本地文件中指定的确切版本。
Elixir/Erlang 有三种流行的版本管理器。这些都很好described here .
exenv
生成 .exenv-version
文件,asdf
生成 .tool-versions
并为 kiex
请阅读它的文档。让一切正常工作的最简单方法是删除所有这些点文件,但在极少数情况下可能会破坏构建。
最好的方法是满足代码所有者隐含的依赖关系。为此,请检查实际使用的工具,并在项目根目录中发出以下命令(下面的示例是针对 asdf
的,其余的应该类似):
$ asdf list elixir
1.5
读取点文件中指定的内容(在本例中为.tool-version
):
$ cat .tool-version
erlang 20.0
elixir 1.5.1
好的,我们缺少版本 1.5.1
。安装它:
$ asdf install elixir 1.5.1
现在您的项目应该可以使用代码所有者暗示的确切版本顺利运行。
安装后,您可以根据适合您的情况设置全局或本地版本。
全局:
$ asdf global elixir 1.5.1
或项目本地:
$ asdf local elixir 1.5.1
关于未安装 Elixir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48068976/