路由器找不到控制器 Beego
Router Not Finding Controller Beego
我有一个正在运行的 beego 应用程序,然后我的路由器停止寻找控制器,我不知道为什么。无论我输入什么 url,路由器都不会直接向控制器抱怨 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 的规范,所以我想了解为什么它找不到控制器。
您没有导入 routers
包。如果您不在任何地方导入 routers
,则永远不会执行 init
函数。您可以测试它在 routers.init
函数中添加一个简单的 fmt.Println('I'm initialized')
。
func init() {
fmt.Println('I'm initialized')
beego.Router("/", &controllers.MainController{})
}
好的,你必须添加一个新的导入_
表示你不会使用,但是,init
函数会被执行!那么你必须在主包中这样写:
import (
"fmt"
"github.com/astaxie/beego"
_ "example/routers"
)
希望对你有用! :-)
我有一个正在运行的 beego 应用程序,然后我的路由器停止寻找控制器,我不知道为什么。无论我输入什么 url,路由器都不会直接向控制器抱怨 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 的规范,所以我想了解为什么它找不到控制器。
您没有导入 routers
包。如果您不在任何地方导入 routers
,则永远不会执行 init
函数。您可以测试它在 routers.init
函数中添加一个简单的 fmt.Println('I'm initialized')
。
func init() {
fmt.Println('I'm initialized')
beego.Router("/", &controllers.MainController{})
}
好的,你必须添加一个新的导入_
表示你不会使用,但是,init
函数会被执行!那么你必须在主包中这样写:
import (
"fmt"
"github.com/astaxie/beego"
_ "example/routers"
)
希望对你有用! :-)