代码之家  ›  专栏  ›  技术社区  ›  rld

导入_config“#{Mix.env}.exs”时出现Code.LoadError

  •  0
  • rld  · 技术社区  · 7 年前

    我把这个放在桌子上 config.exs 文件:

    use Mix.Config
    import_config "#{Mix.env}.exs"
    

    import_config "#{Mix.env()}.exs"
    

    当我试着跑的时候 mix test 它抱怨说:

    mix test                                    
    ** (Code.LoadError) could not load /Users/romenigld/workspace/elixir/ebooks/issues/config/test.exs
        (elixir) lib/code.ex:1147: Code.find_file/2
        (elixir) lib/code.ex:706: Code.eval_file/2
        (mix) lib/mix/config.ex:187: anonymous fn/2 in Mix.Config.__import__!/2
        (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
        (mix) lib/mix/config.ex:186: Mix.Config.__import__!/2
        (stdlib) erl_eval.erl:680: :erl_eval.do_apply/6
        (elixir) lib/code.ex:232: Code.eval_string/3
    

    这是个错误,还是我需要做些不同的事情?

    1 回复  |  直到 7 年前
        1
  •  2
  •   J. Random Coder    7 年前

    怎样 import_config/1 作品

    Mix.Config#import_config/1 :

    从给定的一个或多个文件导入配置。

    如果路径\或\通配符不是通配符,而是单个文件的路径,则导入该文件;如果文件不存在,则会引发错误。

    相对的 路径/通配符,它将相对于当前配置文件所在的目录展开。

    怎样 Mix.env/0 作品

    从…起 Mix#env/0 :

    返回混合环境。

    MIX_ENV :dev 如果未设置环境变量。 Combare implementation .

    调用时运行的任务 mix test tells Mix 默认为 :test 通过 @preferred_cli_env attribute .

    结合 导入配置/1 Mix.env/1

    import_config "#{Mix.env()}.exs"
    

    混合试验 第一次)到

    import_config "test.exs"
    

    道路是这样的 相对的 test.exs 在包含调用的文件所在的同一目录中 import_config 位于。

    在你的情况下,那是 /Users/romenigld/workspace/elixir/ebooks/issues/config/ 因此,您必须在中创建一个有效的配置文件 /Users/romenigld/workspace/elixir/ebooks/issues/config/test.exs dev prod ).

    通过在调用之前检查环境,可以避免为所有环境创建配置文件 导入配置 :

    unless Mix.env() == :prod do
      import_config("#{Mix.env()}.exs")
    end
    
    推荐文章