Golang中Gorilla/mux路由库报错问题排查

Golang中Gorilla/mux路由库报错问题排查 Gorilla/mux 还在使用吗?为什么我在终端中输入这个命令时会收到这个错误?

错误信息 go: 在当前目录或任何父目录中未找到 go.mod 文件。 在模块外不再支持 ‘go get’。 要构建和安装命令,请使用带版本的 ‘go install’, 例如 ‘go install example.com/cmd@latest’。 更多信息,请参阅 Deprecation of ‘go get’ for installing executables - The Go Programming Language 或运行 ‘go help get’ 或 ‘go help install’。


更多关于Golang中Gorilla/mux路由库报错问题排查的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang中Gorilla/mux路由库报错问题排查的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Gorilla/mux 路由库目前仍然可以使用,但 Gorilla 项目组已于 2022 年宣布停止维护。不过,该库在现有项目中依然稳定运行,只是不再接收新功能或安全更新。

你遇到的错误与 Gorilla/mux 本身无关,而是 Go 模块的使用问题。错误提示表明你在没有 go.mod 文件的目录中执行了 go get 命令。自 Go 1.16 起,在模块外使用 go get 安装可执行文件已被弃用。

以下是解决方案:

1. 初始化 Go 模块(如果项目未初始化) 在项目根目录执行:

go mod init your-module-name

2. 添加 Gorilla/mux 依赖

go get github.com/gorilla/mux

这会在 go.mod 文件中添加依赖,并下载库到本地缓存。

3. 示例代码验证 创建 main.go

package main

import (
    "fmt"
    "net/http"
    "github.com/gorilla/mux"
)

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Gorilla/mux 正常运行")
    })
    
    http.ListenAndServe(":8080", r)
}

4. 运行程序

go run main.go

5. 依赖管理说明 执行 go get 后,依赖会自动记录在 go.mod 文件中。例如:

module your-module-name

go 1.21

require github.com/gorilla/mux v1.8.1

如果需要在全局安装命令行工具,请使用 go install(如错误提示所述),但 Gorilla/mux 是库而非可执行文件,因此只需在项目内通过 go get 添加依赖即可。

注意:长期项目建议考虑迁移到标准库的 http.ServeMux 或活跃维护的替代方案,如 chigin

回到顶部