猿问

从执行的 bin 中读取配置

我正在使用 go viper 读取config我的 repo 中的文件

myrepo
 -config.yaml
 -main.go

我使用以下代码

viper.SetConfigName("config")
viper.AddConfigPath(".")
viper.SetConfigType("yaml")
err := viper.ReadInConfig()

现在我将它编译为二进制文件,现在我从不同的路径运行它(运行 bin),我得到了找不到配置的错误,这里可能出了什么问题?

该文件在那里,如果我ioutil.ReadFile在调试中使用,我会得到它但不是来自可执行文件......


心有法竹
浏览 89回答 1
1回答

慕哥6287543

所以你告诉 viper 它可以从 location 读取配置./config.yaml。当你编译项目时,编译器不会将里面的配置数据config.yaml和二进制一起编译。因此,每次二进制文件运行时,它都会查找文件./config.yaml.所以你在这里几乎没有选择。要么将配置文件与二进制文件一起移动,并确保在复制二进制文件时也复制配置文件。您拥有的另一个选择是拥有一个标志“configpath”,您将配置路径传递给该标志,viper 应该读取该标志并获取配置。另一种选择是将配置放在 .go 文件中,然后编译配置(但我猜这是你不想要的)
随时随地看视频慕课网APP

相关分类

Go
我要回答