解决 Go 模块与顶级模块和子模块导入的依赖冲突
当顶级模块和以下之一时,会出现此问题它的子模块作为不同版本分别导入,导致依赖冲突。考虑这样一个场景,您的项目有两个依赖项:github.com/foo/bar 和 github.com/raz/mataz。执行 go mod download 后,由于存在子模块,会下载两个不同版本的 github.com/shared/dependency。
检查下载的模块会发现多个下载版本:
尝试导入 github.com/ 时,此不匹配会导致不明确的导入错误共享/依赖/api。由于两个目录中存在版本冲突,go 工具无法确定使用哪个版本。
解决方案:升级依赖版本
此问题的根本原因通常是与冲突依赖项中的 pre-go-modules 版本控制相关。将以下行添加到 go.mod 文件中会强制冲突的依赖项使用支持 go-module 的版本:
replace ( github.com/shared/dependency => github.com/shared/dependency v1.2.0 )
这有效地强制对 github.com/shared/dependency 的引用使用与 go 兼容的版本模块,解决冲突的依赖问题。值得注意的是,此解决方案有效,因为对共享依赖项的所有引用都被定向到启用 go-module 的版本。
以上是如何解决顶级模块和子模块导入的 Go 模块依赖冲突?的详细内容。更多信息请关注PHP中文网其他相关文章!