我需要设置我的配置文件的路径。问题是,例如,我的配置文件在其中,my_app/config但我的工作目录在my_app/workingdir其中,我不应该设置绝对路径或工作目录的路径,因为在生产中绝对路径和工作目录会改变。对于测试,我知道我可以从我的代码位置设置路径,但我需要一种更清洁的方式。 workingdir, err := os.Getwd() if err != nil { logger.Error(err) } viper.SetConfigFile(workingdir + "/config/local.yaml")
3 回答

肥皂起泡泡
TA贡献1829条经验 获得超6个赞
不要将配置文件放在工作目录之外,始终在主包中创建一个新文件夹,如 conf 并将文件放入其中。
因此,目录结构将是
my_app/conf/config.yml
然后通过 main.go 的 init 函数将配置文件设置为 viper
//main.go
func init() {
setUpViper()
}
func setUpViper() {
viper.AddConfigPath("./conf")
viper.SetConfigName("config")
}

杨__羊羊
TA贡献1943条经验 获得超7个赞
您可以使用..转到父目录,然后从那里转到config文件夹。
workingdir, err := os.Getwd()
if err != nil {
logger.Error(err)
}
viper.SetConfigFile(workingdir + "/../config/local.yaml")

大话西游666
TA贡献1817条经验 获得超14个赞
使用“..”指定目录的父级。
因为相对路径根植于工作目录,所以无需在应用程序代码中获取工作目录。
使用以下命令指定配置文件的路径:
viper.SetConfigFile("../config/local.yaml")
- 3 回答
- 0 关注
- 170 浏览
添加回答
举报
0/150
提交
取消