如何解决在使用 gopkg.in/ini.v1 进行测试和调试期间无法加载我的 iniFile
这是我的 Go 项目。
.
├── cmd
│ └── main
│ └── main.go
├── config
│ └── config.go
│
├── config.ini
通常它是可执行的 go run 和 go build。
但是在测试和调试期间不能执行。(去测试./cmd/main和vscode调试) 下面有错误
config.ini: no such file or directory
我尝试将路径更改为 ../../config.ini。 它运行良好,但无法执行 go run 和 build。
如何在所有环境中设置可执行文件的路径?
package config
import (
"log"
"os"
"gopkg.in/ini.v1"
)
type ConfigList struct {
FgiAPIKey string
FgiAPIHost string
Port int
JwtAccess string
JwtRefresh string
}
var Config ConfigList
func init() {
cfg,err := ini.Load("config.ini")
if err != nil {
log.Printf("Failed to read file: %v",err)
os.Exit(1)
}
Config = ConfigList{
FgiAPIKey: cfg.Section("fgi").Key("api_key").String(),FgiAPIHost: cfg.Section("fgi").Key("api_host").String(),Port: cfg.Section("web").Key("port").MustInt(),JwtAccess: cfg.Section("secret").Key("jwt_access").String(),JwtRefresh: cfg.Section("secret").Key("jwt_refresh").String(),}
}
解决方法
问题在于您使用的不同工具在不同的地方生成(或运行二进制)二进制文件。代码中 config.ini
的路径被指定为相对于进程的当前工作目录。如果您想要非侵入性解决方案,您需要更改您的工作流程(您在其中构建和运行主二进制文件、调试器或 go 测试),或者您可以实施一些回退机制或环境变量,以覆盖配置文件的默认路径。
在 VSCode 中,cwd
配置中应该有 launch.json
变量,允许您设置工作目录。您应该能够设置 cwd: "${workspaceFolder}"
,这应该像您从存储库的根目录运行命令一样工作。
变量参考见https://code.visualstudio.com/docs/editor/variables-reference。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。