如何在我的工作存储库之外的 viper 中设置我的配置文件

我需要设置我的配置文件的路径。问题是,例如,我的配置文件在其中,my_app/config但我的工作目录在my_app/workingdir其中,我不应该设置绝对路径或工作目录的路径,因为在生产中绝对路径和工作目录会改变。对于测试,我知道我可以从我的代码位置设置路径,但我需要一种更清洁的方式。


    workingdir, err := os.Getwd()

    if err != nil {

        logger.Error(err)

    }

    viper.SetConfigFile(workingdir + "/config/local.yaml")


qq_遁去的一_1
浏览 171回答 3
3回答

肥皂起泡泡

不要将配置文件放在工作目录之外,始终在主包中创建一个新文件夹,如 conf 并将文件放入其中。因此,目录结构将是my_app/conf/config.yml然后通过 main.go 的 init 函数将配置文件设置为 viper//main.gofunc init() {  setUpViper()}func setUpViper() {  viper.AddConfigPath("./conf")  viper.SetConfigName("config")}

杨__羊羊

您可以使用..转到父目录,然后从那里转到config文件夹。workingdir, err := os.Getwd()if err != nil {    logger.Error(err)}viper.SetConfigFile(workingdir + "/../config/local.yaml")

大话西游666

使用“..”指定目录的父级。因为相对路径根植于工作目录,所以无需在应用程序代码中获取工作目录。使用以下命令指定配置文件的路径: viper.SetConfigFile("../config/local.yaml")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go