Go 框架 Echo 中间件使用

Go framework Echo middleware usage

提问人:Alfred Jijo 提问时间:11/14/2023 最后编辑:Zeke LuAlfred Jijo 更新时间:11/14/2023 访问量:33

问:

在我的主要函数中,我使用了 go 框架 echo 来创建一个 Logger 和 Recover

func main() {

    db := initDB("storage.db")
    migrate(db)

    e := echo.New()

    -> e.Use(middleware.Logger())
    -> e.Use(middleware.Recover())

    e.File("/", "public/index.html")
    e.GET("/tasks", handlers.GetTasks(db))
    e.PUT("/tasks", handlers.PutTask(db))
    e.DELETE("/tasks/:id", handlers.DeleteTask(db))

    e.Logger.Fatal(e.Start(":1323"))
}

但是,有 2 个错误显示:

cannot use middleware.Recover() (value of type "github.com/labstack/echo".MiddlewareFunc) as "github.com/labstack/echo/v4".MiddlewareFunc value in argument to e.Use

记录器也是如此。

我尝试删除并重新安装回声过孔并重新配置文件,但错误仍然存在。go get ...go.mod

import (
    "database/sql"

    "github.com/Alfred-Jijo/go-vue-echo/handlers"
    "github.com/labstack/echo/middleware"
    "github.com/labstack/echo/v4"

    _ "github.com/mattn/go-sqlite3"
)

我的导入基本上从一开始就没有改变。 我怀疑我的文件有错误,但我太新了,无法理解它。go.mod

require github.com/labstack/echo/v4 v4.11.3

require (
    github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
    github.com/labstack/echo v3.3.10+incompatible
    github.com/labstack/gommon v0.4.1 // indirect
    github.com/mattn/go-colorable v0.1.13 // indirect
    github.com/mattn/go-isatty v0.0.20 // indirect
    github.com/mattn/go-sqlite3 v1.14.18
    github.com/valyala/bytebufferpool v1.0.0 // indirect
    github.com/valyala/fasttemplate v1.2.2 // indirect
    golang.org/x/crypto v0.15.0 // indirect
    golang.org/x/net v0.17.0 // indirect
    golang.org/x/sys v0.14.0 // indirect
    golang.org/x/text v0.14.0 // indirect
)

我也尝试再次构建项目,但同样的错误仍然存在。

Go 框架 go-echo

评论


答:

0赞 Zeke Lu 11/14/2023 #1

错误消息很清楚。以下类型是两种不同的类型:

  • "github.com/labstack/echo".MiddlewareFunc
  • "github.com/labstack/echo/v4".MiddlewareFunc

看起来您使用的是 echo v4,那么中间件的导入路径应该是 .github.com/labstack/echo/v4/middleware

请按照以下步骤解决问题:

  1. 将导入路径替换为
    "github.com/labstack/echo/middleware"
    
    "github.com/labstack/echo/v4/middleware"
    
  2. 然后运行
    go mod tidy