😚一个不甘平凡的普通人,致力于为Golang社区和算法学习做出贡献,期待您的关注和认可,陪您一起学习打卡!!!😘😘😘
🤗专栏:算法学习
🤗专栏:Go实战
💬个人主页:个人主页
\
文章目录
前言
在使用viper去寻找配置文件的时候,老是出错,之前已经遇到过了一次,没搞懂,所以我想总结一篇文章来记录这个问题。
问题描述
我想要让inital包中的viper函数读取 同一目录下的config包中的config.yaml文件,老是访问错误
配置文件读取部分代码:
//已修改后的代码 可以正常访问
v := viper.New()
//v.SetConfigFile("config/config.yaml")
v.AddConfigPath("config")
v.SetConfigName("config")
v.SetConfigType("yaml")
err := v.ReadInConfig() // 查找并读取配置文件
if err != nil { // 处理读取配置文件的错误
panic(fmt.Errorf("Fatal error config file: %s \n", err))
}
v.WatchConfig()
v.OnConfigChange(func(e fsnotify.Event) {
// 配置文件发生变更之后会调用的回调函数
fmt.Println("Config file changed:", e.Name)
if err := v.Unmarshal(&global.G_CONFIG); err != nil {
fmt.Println(err)
}
})
if err := v.Unmarshal(&global.G_CONFIG); err != nil {
fmt.Println(err)
}
目标配置文件
解决
首先应该明白的是,从哪里开始寻找。 viper在哪里调用,是在我的main方法里调用,所以就会从main方法所在的目录这级开始寻找。
第二:viper中读取配置文件的方式有两种。
第一种:直接写该配置文件的绝对路径
v.SetConfigFile("config/config.yaml")
第二种:写配置文件的所有在,配置文件的名字,配置文件的后缀
v.AddConfigPath("config")
v.SetConfigName("config")
v.SetConfigType("yaml")
清晰这两点,我相信你应该不会在配置文件这块出错了,关注我,学习更多的go实战小技巧!!