我有一个正在运行的beego应用程序,然后我的路由器停止找到控制器,我不知道为什么。无论我输入什么网址,路由器都不会直接向控制器抱怨nomatch
2016/07/26 17:24:50 [router.go:829] [D] | GET | / | 478.352μs| notmatch |
app.conf
appname = exampleapp
httpport = 8080
runmode = dev
router.go
package routers
import (
"github.com/astaxie/beego"
"example/controllers"
)
func init() {
beego.Router("/", &controllers.MainController{})
}
default.go(控制器)
package controllers
import (
"github.com/astaxie/beego"
)
type MainController struct {
beego.Controller
}
func (c *MainController) Get() {
c.Data["Website"] = "http://localhost:8080"
c.TplName = "index.tpl"
}
main.go
package main
import (
"fmt"
"github.com/astaxie/beego"
)
func main() {
fmt.Pritnln("Starting Beego App")
beego.Run()
fmt.Println("Finished Running Beego App")
}
我相信这符合http://beego.me/docs/mvc/controller/router.md的规格,所以我想了解它为什么找不到控制器。
答案 0 :(得分:2)
您没有导入routers
个包裹。如果您未在任何地方导入routers
,则永远不会执行init
功能。您可以在fmt.Println('I'm initialized')
函数中添加一个简单的routers.init
来测试它。
func init() {
fmt.Println('I'm initialized')
beego.Router("/", &controllers.MainController{})
}
好的,您必须使用_
添加新导入,表示您不会使用,但init
功能将被执行!然后你必须在主包中写这个:
import (
"fmt"
"github.com/astaxie/beego"
_ "example/routers"
)
我希望它有用! : - )