You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在主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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:45:34