使用gorilla/mux时出错,“vendor/”在导入github路径之前

zwghvu4y  于 2022-12-20  发布在  Go
关注(0)|答案(2)|浏览(143)

看起来这个错误是关于供应商的,我以为我没有在这个项目中使用它,但是看起来像是一个github包被导入了一个vendor/前缀
下面是错误打印:

命令行参数

.\主.开始:14:33:不能将r(类型为 *“vendor/github.com/gorilla/mux“.Router的变量)用作类型为 *“github.com/gorilla/mux”.Router的路由参数。RegisterBookStoreRoutes
这是主文件中的代码,开始

import (
    "log"
    "net/http"

    "github.com/AleAgu200/go-bookstore/pkg/routes"
    "github.com/gorilla/mux"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)

func main(){
    r := mux.NewRouter() /* creamos un nuevo router */
    routes.RegisterBookStoreRoutes(r) /* registramos nuestras rutas */
    log.Fatal(http.ListenAndServe(":8080", r)) /* le decimos que escuche en el puerto 8080 */
}

以及模块中的路线代码(文件名为bookstore-routes.go)

package routes

/* aqui importamos los archivos o paquetes que necesitamos */
import (
    "github.com/AleAgu200/go-bookstore/pkg/controllers"
    "github.com/gorilla/mux"
)

/* aqui definimos nuestras rutas como una funcion de crear una libreria */
var RegisterBookStoreRoutes = func(router *mux.Router) {
    router.HandleFunc("/books", controllers.GetBooks).Methods("GET") /* ruta para tener todos los libros*/
    router.HandleFunc("/books/{id}", controllers.GetBook).Methods("GET") /* ruta para tener 1 libro por ID */
    router.HandleFunc("/books", controllers.CreateBook).Methods("POST") /* ruta para crear un libro */
    router.HandleFunc("/books/{id}", controllers.UpdateBook).Methods("PUT") /* ruta para actualizar un libro */
    router.HandleFunc("/books/{id}", controllers.DeleteBook).Methods("DELETE") /* ruta para eliminar un libro */
}
eqfvzcg8

eqfvzcg81#

尝试删除vendor文件夹,然后在项目的根目录(包含go.mod的目录)中重新运行go mod tidy
如果你仍然需要vendoring,你必须重新运行go mod vendor,每次你想更新/改变你的依赖关系。
请看一下关于自动售货的说明书以获得更多信息。

wqsoz72f

wqsoz72f2#

我有同样的问题(原因相同的教程,我相信),我修复了它:重新安装go,按照官方文档安装go并创建一个项目,然后复制里面相同的代码,运行go mod tidy,go build,go run main.go,它工作了。
我想我在我的安装中做了一些局部的修改来修复一些问题,这引起了供应商的错误配置。但是我是一个新手,除了重新安装,我不能用其他方法修复。

相关问题