无法在主Elixir项目中访问依赖项的配置
解决本地依赖应用配置无法访问的问题
这个问题的核心在于:Elixir默认不会自动加载依赖应用的配置,除非该依赖应用被启动,或者你显式导入它的配置文件。你在world_app内部能正常获取配置,是因为当你在该项目中启动iex -S mix时,Mix会自动加载当前应用的所有配置;但在hello_app中,只有主应用和被标记为需要启动的依赖应用的配置才会被加载。
下面提供两种可行的解决方案:
方案1:启动依赖应用world_app
如果world_app是一个完整的OTP应用(包含lib/world_app/application.ex),你可以在hello_app的mix.exs中把它加入到需要启动的应用列表里:
修改hello_app/mix.exs中的application/0函数:
def application do [ extra_applications: [:logger, :world_app], # 把:world_app添加到这里 mod: {HelloApp.Application, []} ] end
修改完成后,重启iex -S mix,此时world_app会被作为应用启动,它的配置也会被自动加载,你就能正常获取到some_config的值了。
方案2:显式导入world_app的配置文件
如果world_app只是一个纯代码库(不是OTP应用),或者你不想启动它的应用进程,你可以直接在hello_app的配置文件中导入world_app的配置:
修改hello_app/config/config.exs,在合适的位置添加:
# 导入world_app的配置文件,路径根据你的项目结构调整 import_config "../world_app/config/config.exs"
保存后重启iex -S mix,此时hello_app会加载world_app的配置,即使world_app没有被启动,你也能获取到some_config的值。
验证效果
无论采用哪种方案,重启iex -S mix后执行以下命令,应该就能得到预期结果:
iex(1)> Application.get_env(:world_app, :some_config) "config_string"
内容的提问来源于stack exchange,提问作者Question Mcquestioner
相关产品推荐
相关产品推荐

