目录

go的ambiguous-import-in-multiple-modules

目录

go的”ambiguous import in multiple modules”

执行“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 imports
        github.com/gomooon/goredis imports
        github.com/gin-gonic/gin/binding imports
        github.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 文件中明确指定使用的版本。解决方案有两种:

    1. 在 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
    1. 或者直接在项目根目录执行以下命令
# 先删除可能存在的冲突版本
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