在使用 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.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(),

    }

}


小怪兽爱吃肉
浏览 158回答 1
1回答

森栏

问题是您使用的不同工具在不同的地方(或从不同的地方运行二进制文件)生成二进制文件。代码中的路径config.ini指定为相对于进程的当前工作目录。如果您想要非侵入式解决方案,您需要更改您的工作流程(在其中构建和运行主二进制文件、调试器或进行测试),或者您可以实现一些回退机制或环境变量,以覆盖配置文件的默认路径。在 VSCode 中,配置中应该有允许您设置工作目录的cwd变量。launch.json您应该能够设置cwd: "${workspaceFolder}"并且应该像从存储库的根目录运行命令一样工作。有关变量参考,请参阅https://code.visualstudio.com/docs/editor/variables-reference。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go