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

标签 elixir elixir-mix

我定义了一个与 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 mixMIX_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/

相关文章:

elixir - 合并两列并搜索它们

elixir - 如何使用 mix 来运行测试

intellij-idea - 配置和运行 Phoenix Framework 应用程序

GitHub Actions 无效工作流程文件错误

elixir - Repo 如何计算出表的名称?

elixir - `virtual: true` 对嵌入式架构有影响吗?

Elixir 从直播中获取元数据

mysql - Ecto 2.0 + MySQL : cleaning fixtures in tests

elixir - 在运行 Phoenix 服务器时,如何让 elixir 编译器显示警告?

elixir - iex- 如何从 app 文件夹外运行 elixir 项目