如何在包之间共享服务器上下文

How to share a server context between packages

我对使用光纤还很陌生,正在努力在一个包中创建一个服务器,然后在另一个包中共享上下文。

// package main
func init() {
    // Init server
    globs.InitServer()
}

func main() {
    globs.Server.Get("/hello", handlers.HelloWorld)
}

并且我正在将服务器初始化为;

// package globs
// global vars
var (
    Conf   map[string]string
    DBPool *pgxpool.Pool
    Loggi  *zap.Logger
    Server *fiber.App
)

func InitServer() {
    srv := fiber.New()
    srv.Use(logger.New())
    Server = srv
    Server.Listen(":3000")
}

最后,我正在尝试将控制器处理为;

// package handlers
func HelloWorld(c *fiber.Ctx) error {
    globs.Loggi.Info("Says Hello")
    return c.SendString("Hello, World !")
}

我在编译过程中没有收到任何错误,应用程序启动正常,但它无法识别任何路由。如果我转到“/hello”,它会给出 404 并显示“Cannot GET /hello”

您正在 init 函数中调用 Server.ListenServer.Listen 不会 return 直到监听失败,所以你必须在设置完所有内容后将其移动到 main 的末尾。