为了账号安全,请及时绑定邮箱和手机立即绑定

在使用 gopkg.in/ini.v1 进行测试和调试期间无法加载我的 iniFile

在使用 gopkg.in/ini.v1 进行测试和调试期间无法加载我的 iniFile

Go
小怪兽爱吃肉 2022-07-25 11:18:03
这是我的 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。如何在所有环境中设置可执行文件的路径?配置/config.gopackage configimport (    "log"    "os"    "gopkg.in/ini.v1")type ConfigList struct {    FgiAPIKey  string    FgiAPIHost string    Port       int    JwtAccess  string    JwtRefresh string}var Config ConfigListfunc 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(),    }}
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

问题是您使用的不同工具在不同的地方(或从不同的地方运行二进制文件)生成二进制文件。代码中的路径config.ini指定为相对于进程的当前工作目录。如果您想要非侵入式解决方案,您需要更改您的工作流程(在其中构建和运行主二进制文件、调试器或进行测试),或者您可以实现一些回退机制或环境变量,以覆盖配置文件的默认路径。

在 VSCode 中,配置中应该有允许您设置工作目录的cwd变量。launch.json您应该能够设置cwd: "${workspaceFolder}"并且应该像从存储库的根目录运行命令一样工作。

有关变量参考,请参阅https://code.visualstudio.com/docs/editor/variables-reference


查看完整回答
反对 回复 2022-07-25
  • 1 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信