没有安装Elixir

时间:2018-01-02 22:58:24

标签: 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

deps部分:

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

1 个答案:

答案 0 :(得分:5)

好的,为了它的价值,我会在这里发布一个答案。

如果elixir版本管理器文件最初提交到此存储库中,则可能会遇到尝试运行外部代码(例如,从 github 克隆,或类似)的问题(通过代码所有者,)和代码使用者安装了相同的版本管理器,但没有在本地文件中指定的确切版本。

Elixir / Erlang有三个流行的版本管理器。这些很好described here

exenv生成.exenv-version个文件,asdf生成.tool-versionskiex生成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 。安装时使用:

Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL,"iiop://<server ip address or name>:<server bootstrap address port>");   //<--how can get this url?
InitialContext ctx = new InitialContext(env);

现在,您的项目应该能够使用代码所有者隐含的确切版本顺利运行。