執行“go mod tidy”報如下錯誤:
go mod tidy -compat=1.17
go: finding module for package github.com/gomooon/goredis
go: found github.com/gomooon/goredis in github.com/gomooon/goredis v0.3.5
go: github.com/gomooon/core importsgithub.com/gomooon/goredis importsgithub.com/gin-gonic/gin/binding importsgithub.com/ugorji/go/codec: ambiguous import: found package github.com/ugorji/go/codec in multiple modules:github.com/ugorji/go v1.1.4 (/root/go/pkg/mod/github.com/ugorji/go@v1.1.4/codec)github.com/ugorji/go/codec v1.2.7 (/root/go/pkg/mod/github.com/ugorji/go/codec@v1.2.7)
make: *** [Makefile.origin:16: build] Error 1
這個錯誤是由于 github.com/ugorji/go/codec 包存在多個版本沖突導致的,需要在 go.mod 文件中明確指定使用的版本。解決方案有兩種:
-
- 在 go.mod 文件中添加 replace 指令
replace github.com/ugorji/go => github.com/ugorji/go v1.1.4
replace github.com/ugorji/go/codec => github.com/ugorji/go/codec v1.2.7
-
- 或者直接在項目根目錄執行以下命令
# 先刪除可能存在的沖突版本
go mod edit -dropreplace github.com/ugorji/go
go mod edit -dropreplace github.com/ugorji/go/codec# 強制使用特定版本
go get github.com/ugorji/go@v1.1.4
go get github.com/ugorji/go/codec@v1.2.7# 清理并更新依賴
go mod tidy