vic*_*ris 2 elixir phoenix-framework
我只是克隆了一个Elixir / Phoenix项目,但无法运行任何混合任务。我不断elixir 1.5.1 not installed
。由于安装了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
Run Code Online (Sandbox Code Playgroud)
和部门部分:
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
Run Code Online (Sandbox Code Playgroud)
好吧,对于它的价值,我会在这里发布答案。
如果elixir版本管理器文件最初是由代码所有者提交到此存储库中的,并且代码使用者安装了相同的版本管理器,则可能会遇到尝试运行外部代码的问题(例如,从github克隆等)。没有在此本地文件中指定的确切版本。
周围有三种流行的Elixir / Erlang版本管理器。这些在这里有很好的描述。
exenv
产生.exenv-version
文件,asdf
产生.tool-versions
,kiex
请阅读其文档。使一切正常工作的最简单方法是删除所有这些点文件,但在极少数情况下可能会破坏构建。
最好的方法是满足代码所有者隐含的依赖关系。为此,请检查实际使用的工具,然后在项目根目录中发出以下命令(以下示例适用于asdf
,其余应类似):
$ asdf list elixir
1.5
Run Code Online (Sandbox Code Playgroud)
读取点文件中指定的内容(.tool-version
在这种情况下):
$ cat .tool-version
erlang 20.0
elixir 1.5.1
Run Code Online (Sandbox Code Playgroud)
好的,我们缺少一个版本1.5.1
。通过以下方式安装:
$ asdf install elixir 1.5.1
Run Code Online (Sandbox Code Playgroud)
现在,您的项目应该可以使用代码所有者隐含的确切版本顺利运行。