微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在使用 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。

如何在所有环境中设置可执行文件的路径?

config/config.go

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 举报,一经查实,本站将立刻删除。