我正在使用 go viper 读取config我的 repo 中的文件myrepo
-config.yaml
-main.go我使用以下代码viper.SetConfigName("config")
viper.AddConfigPath(".")
viper.SetConfigType("yaml")
err := viper.ReadInConfig()现在我将它编译为二进制文件,现在我从不同的路径运行它(运行 bin),我得到了找不到配置的错误,这里可能出了什么问题?该文件在那里,如果我ioutil.ReadFile在调试中使用,我会得到它但不是来自可执行文件......
1 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
所以你告诉 viper 它可以从 location 读取配置./config.yaml
。当你编译项目时,编译器不会将里面的配置数据config.yaml
和二进制一起编译。因此,每次二进制文件运行时,它都会查找文件./config.yaml
.
所以你在这里几乎没有选择。要么将配置文件与二进制文件一起移动,并确保在复制二进制文件时也复制配置文件。您拥有的另一个选择是拥有一个标志“configpath”,您将配置路径传递给该标志,viper 应该读取该标志并获取配置。另一种选择是将配置放在 .go 文件中,然后编译配置(但我猜这是你不想要的)
- 1 回答
- 0 关注
- 88 浏览
添加回答
举报
0/150
提交
取消