无法在Elixir项目中获取环境变量

jsv*_*isa 4 elixir-mix elixir

我定义了一个与guide-started相关的环境变量,我的mix.exs

defmodule Basic.Mixfile do
  use Mix.Project

  def project do
    [app: :basic,
     version: "0.0.1",
     elixir: "~> 0.13.0-dev",
     deps: deps,
     env: [
      dev: [foo: "bar"] ] ]
  end

  # Configuration for the OTP application
  #
  # Type `mix help compile.app` for more information
  def application do
    [ applications: [],
      mod: { Basic, [] } ]
  end

  # List all dependencies in the format:
  #
  # { :foobar, git: "https://github.com/elixir-lang/foobar.git", tag: "0.1" }
  #
  # Type `mix help deps` for more examples and options
  defp deps do
    []
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我用iex -S mix或启动项目MIX_ENV=dev iex -S mix,我想得到环境变量:application.get_env(:basic, :foo),它转向:undefined; 并使用:application.get_all_env(:basic),它返回[included_applications: []],没有env变量.我的问题是我应该如何获得环境价值?

Jos*_*lim 9

:env不得指定project,但应用程序里面一个.

def application do
  [ applications: [],
    mod: { Basic, [] },
    env: [foo: :bar] ]
end
Run Code Online (Sandbox Code Playgroud)

然后你可以访问它:

Application.get_env(:basic, :foo)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,不支持为特定MIX_ENV(如dev或prod)指定环境.这正是:env内部project被弃用的原因.将两个键命名为:env具有不同的行为是混乱的秘诀.:)