【问题标题】:Can't access environment variables in leiningen project.clj with environ无法使用 environ 访问 leiningen project.clj 中的环境变量
【发布时间】:2014-02-26 08:41:21
【问题描述】:

我正在尝试使用 environ 访问在我的 project.clj :dev 配置文件中指定的环境变量。这看起来是设置不同配置选项的好方法,但我似乎无法让它工作。我的 project.clj 条目如下所示:

:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
                      [ring-mock "0.1.5"]]
       :env {:foo "FOO" :bar "BAR"}}}

如果我运行 lein repl 并 require 然后从我的项目中输入(使用 in-ns)一个命名空间,environ.core/env 只会返回 nil:

(environ.core/env :foo)
nil

将 :env 条目添加到 .lein/profiles.clj 中的 :user 配置文件也不起作用。我做错了什么?

【问题讨论】:

  • 如果您运行(System/getenv),您是否看到“FOO”或“foo”或“:foo”作为任何键?例如,我注意到 (env.core/env :pwd) 返回由我的环境中的“PWD”键引用的值。
  • @noisesmith 好吧,我可以使用 environ 获取诸如 PATH 之类的环境变量,它只是在我的 defproject :profiles 下定义的那些似乎看不到的变量。不,我没有看到 foo 的任何变化。
  • 如果 environ 可以获取其他 env var,这不是 environ 问题,而是 leiningen 问题。很可能您没有正确添加环境变量。
  • @noisesmith 这正是我的想法,但我很确定我是。比较接受的答案here

标签: clojure environment-variables leiningen


【解决方案1】:

好的,这是一个更彻底地阅读文档的案例。 :) 要访问项目映射中指定的环境变量,您需要 lein-environ 插件。像这样添加它:

:plugins [[lein-environ "0.4.0"]]

那行得通。不过,在文档中很容易忽略这一点。

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 2021-04-23
    • 2014-02-11
    • 2018-03-17
    • 2021-05-05
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 2023-01-08
    相关资源
    最近更新 更多