路由器找不到控制器 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"
)

希望对你有用! :-)