【问题标题】:How do I open a config file that is located in a folder not with the main file?如何打开位于不在主文件的文件夹中的配置文件?
【发布时间】:2022-07-21 16:28:12
【问题描述】:

我想给我的项目添加一个配置,我有这样一个项目结构:

app:
  -cmd
    - main
       -app.go
  -internal
    - config
        -config.go
  -pkg
  config.yaml
  go.mod
  go.sum

在配置文件中,我要读取config.yaml:

func GetConfig() *Config {
    once.Do(func() {
        instance = &Config{}
        logger := logging.GetLogger("info")
        logger.Info("start config initialisation")
        if err := cleanenv.ReadConfig("config.yaml", instance); err != nil {
            help, _ := cleanenv.GetDescription(instance, nil)
            logger.Info(help)
            logger.Fatal(err)
        }

    })
    return instance
}

我得到一个错误:系统找不到指定的文件。 而要修复它,我需要将配置文件移动到启动应用程序的文件夹中,即 cmd/main 我想知道是否有可能以某种方式修复它,以便文件与项目的初始化以及 go.mod 等一起存在。我试图指定不同的路径来代替阅读该文件,但没有任何效果。

我使用 cleanenv 库来阅读

【问题讨论】:

  • 路径相对于working directory,而不是源文件或可执行文件的位置。如果您想将文件与可执行文件一起分发,则embed 可执行文件中的文件。

标签: go


【解决方案1】:
wd,err := os.Getwd()
if err != nil {
    // handle error
}
parentTop := filepath.Dir(wd) // if your working directory is top level you can skip this step
// and wd instead

然后使用父级和parentTop +"/pkg/config.yaml"

【讨论】:

    猜你喜欢
    • 2014-05-03
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多