beego.AppConfig.String取不出預設配置的值
阿新 • • 發佈:2018-12-22
今天在執行新開發的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/
下即可。