1. 程式人生 > >beego.AppConfig.String取不出預設配置的值

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/下即可。