beego.AppConfig.String取不出默认配置的值

今天在运行新开发的beego工程发现使用beego.AppConfig.String取不出配置的值。下面说一下解决思路:

  • beego会默认加载 app.conf
    由于beego会默认加载app.conf的配置,所以首先想到的是beego在何时加载默认配置。研究发现代码是在启动时就去加载默认配置的。所以在我使用前一定以及加载过默认配置。所以换一个思路。

  • beego加载默认app.conf的路径是什么
    源码如下:

func init() {
    BConfig = newBConfig()
    var err error
    if AppPath, err = filepath.Abs(filepath.Dir(os.Args[0])); err != nil {
        panic(err)
    }
    workPath, err := os.Getwd()
    if err != nil {
        panic(err)
    }
    appConfigPath = filepath.Join(workPath, "conf", "app.conf")
    if !utils.FileExists(appConfigPath) {
        appConfigPath = filepath.Join(AppPath, "conf", "app.conf")
        if !utils.FileExists(appConfigPath) {
            AppConfig = &beegoAppConfig{innerConfig: config.NewFakeConfig()}
            return
        }
    }
    if err = parseConfig(appConfigPath); err != nil {
        panic(err)
    }
    if err = os.Chdir(AppPath); err != nil {
        panic(err)
    }
}

上面可以看出,beego默认会从workPath或者AppPath处获取默认配置。所以就将这两个路径打印出来发现对应的路径下没有app.conf
打印出来的值如下******/gomodule/bin,默认的路径是app的启动路径。而使用默认参数go install编译出来的二进制文件在$GOPATH/bin下。那么思路很简单啦。

  • 将编译好的二进制文件移到app所在的目录下就可以了,一般为$GOPATH/src/appname/下即可。

你可能感兴趣的:(go,日常记录)