英文:
Error reading config file. Golang using viper package
问题
请帮我阅读一个env.json文件。每次运行我的代码时,我总是得到以下错误信息:
Error reading config file, Config File "env" Not Found in "[/Users/franklynomonade/go/src/bitbucket.org/core_backend/cmd/server/bitbucket.org/core_backend/pkg/app/config]"
"/Users/franklynomonade/go/src/bitbucket.org/core_backend/cmd/server"
是我的 main.go 文件所在的路径,而 bitbucket.org/core_backend/pkg/app/config
是 env.json 文件所在的路径。
我相信应该读取的 env.json 文件路径是 bitbucket.org/core_backend/pkg/app/config
,而不是 "/Users/franklynomonade/go/src/bitbucket.org/core_backend/cmd/server/bitbucket.org/core_backend/pkg/app/config"
。
我正在使用 github.com/spf13/viper
包来读取 env.json 文件。
以下是读取 env.json 文件的代码:
func LoadConfig() {
viper.AddConfigPath(myPath)
viper.SetConfigName("env")
viper.SetConfigType("json")
// 在给定的路径中搜索配置文件并读取
if err := viper.ReadInConfig(); err != nil {
log.Fatalf("error reading config file: %s", err)
}
// 确认使用的配置文件
log.Printf("Using s: %s\n", viper.ConfigFileUsed())
}
有什么办法可以解决这个问题吗?
英文:
please i need help in reading from an env.json file. Anytime i run my code i always get this error
> Error reading config file, Config File "env" Not Found in
> "[/Users/franklynomonade/go/src/bitbucket.org/core_backend/cmd/server/bitbucket.org/core_backend/pkg/app/config]"
"/Users/franklynomonade/go/src/bitbucket.org/core_backend/cmd/server"
is the path where my main.go file is in, while "bitbucket.org/core_backend/pkg/app/config"
is the path where the env.json file is located.
I believe the path where the env.json file should be read is "bitbucket.org/core_backend/pkg/app/config"
and not "/Users/franklynomonade/go/src/bitbucket.org/core_backend/cmd/server/bitbucket.org/core_backend/pkg/app/config"
I am using github.com/spf13/viper
package to read the env.json file.
func LoadConfig() {
viper.AddConfigPath(myPath)
viper.SetConfigName("env")
viper.SetConfigType("json")
// searches for config file in given paths and read it
if err := viper.ReadInConfig(); err != nil {
log.Fatalf("error reading config file: %s", err)
}
// confirm which config file is used
log.Printf("Using s: %s\n", viper.ConfigFileUsed()
}
Any idea on how i can fix this?
答案1
得分: 0
你可以使用相对路径或绝对路径,通常最好使用相对路径,因为你不需要指定项目外部的路径。
使用相对路径时,它会相对于你执行二进制文件的文件夹进行搜索。
假设这是你的目录结构:
├── core_backend
│ ├── cmd
│ └── pkg
│ ├── api
│ └── app
│ └── config
│ └── env.json
假设你在core_backend
目录中运行程序,你可以将变量myPath
设置为以下值:
"pkg/app/config"
英文:
You can use relative or absolute paths, usually, it's better to use relative paths since you don't need to specify the path outside of your project.
When using the relative path, it searches the path relative to the folder in which you executed the binary.
Assuming this is the tree:
├── core_backend
│ ├── cmd
│ └── pkg
│ ├── api
│ └── app
│ └── config
│ └── env.json
Let's say you run your program in the core_backend
directory, you would set your variable myPath
to this value
"pkg/app/config"
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论