我定义了一个与 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
然后我用
iex -S mix
或 MIX_ENV=dev iex -S mix
启动项目,我想用 :application.get_env(:basic, :foo)
获取环境变量,它变成了 :undefined
;并使用 :application.get_all_env(:basic)
,它返回 [included_applications: []]
,没有 env
变量。我的问题是我应该如何获得环境值(value)?
最佳答案
:env
不能在 project
中指定,而是在应用程序内部指定。
def application do
[ applications: [],
mod: { Basic, [] },
env: [foo: :bar] ]
end
然后你可以访问它:
Application.get_env(:basic, :foo)
在这种情况下,不支持为特定 MIX_ENV(如 dev 或 prod)指定环境。这正是不推荐使用
:env
中的 project
的原因。将两个具有不同行为的键命名为 :env
会导致混淆。 :)
关于elixir - Elixir 项目中无法获取环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23391665/