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

来源:互联网 发布:电视直播哪个软件最好 编辑:程序博客网 时间:2024/06/10 21:21

今天在运行新开发的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/下即可。
0 0