看起来这个错误是关于供应商的,我以为我没有在这个项目中使用它,但是看起来像是一个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 */
}
2条答案
按热度按时间eqfvzcg81#
尝试删除
vendor
文件夹,然后在项目的根目录(包含go.mod
的目录)中重新运行go mod tidy
。如果你仍然需要vendoring,你必须重新运行
go mod vendor
,每次你想更新/改变你的依赖关系。请看一下关于自动售货的说明书以获得更多信息。
wqsoz72f2#
我有同样的问题(原因相同的教程,我相信),我修复了它:重新安装go,按照官方文档安装go并创建一个项目,然后复制里面相同的代码,运行go mod tidy,go build,go run main.go,它工作了。
我想我在我的安装中做了一些局部的修改来修复一些问题,这引起了供应商的错误配置。但是我是一个新手,除了重新安装,我不能用其他方法修复。