在我的主函数中,我使用了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

记录器也是如此.

我已try 删除并重新安装Echo Via 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
)

我也try 重新构建项目,但同样的错误仍然存在.

推荐答案

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

  • "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
    

Go相关问答推荐

如何存储来自异步Goroutine的返回值列表?

如何描述OpenAPI规范中围棋的数据类型.JSON?

转到http服务器头内容-类型设置为多部分/表单-数据,但在客户端获取内容-类型:文本/纯文本

无法获取RPC描述符

提供的client_secret与此帐户上任何关联的SetupIntent都不匹配

nixOS 上的 Nginx 反向代理在try 加载 css/js 时返回 404

使用goroutines在Golang中验证 struct

git ls-remote 成功而 go get 失败

gopacket:IP-in-IP 数据包上的解码层

如何在 Golang 中打印 2 列表?

go - 仅在函数即将返回错误时清理资源

如何确定作为函数参数传递的指针是否正在被修改或副本是否正在被修改?

无法使用 Golang 扫描文件路径

如何在 golang revel 中获取动态应用程序配置

如何编写一个以字符串或错误为参数的通用函数?

try 与 golang testify/suite 并行运行测试失败

同时调用应该只获取一次数据

httprouterhttp.HandlerFunc() 是如何工作的?

Go:如何通过 GIN-Router 从 AWS S3 将文件作为二进制流发送到浏览器?

如何发送带有登录数据的 GET 请求并将 cookie 数据保存到 txt 文件?