网站分析 工具,wordpress图片位置,wordpress 关闭google字体,wordpress安装主题前言
最近小编在 构建一个项目时出现了问题#xff0c;提示报错里ambiguous import#xff1b;查询了解到是 依赖包存在多个不同版本的问题 这样的情况要怎么解决呢#xff1f; 小编先是将问题抛给了 chatgpt#xff0c;得到了如下的信息#xff1a;
# 清理缓存
go clea…前言
最近小编在 构建一个项目时出现了问题提示报错里ambiguous import查询了解到是 依赖包存在多个不同版本的问题 这样的情况要怎么解决呢 小编先是将问题抛给了 chatgpt得到了如下的信息
# 清理缓存
go clean -modcache
# 重新拉取
go get github.com/gin-gonic/gin小编按照上述提示照做了仍然不行。 于是小编想要猜测是 有多个依赖包引用了不用版本的小编想要找出是哪些版本依赖了共同的 ugorji包。于是就有了下面的处理思路。
安装go项目依赖可视化相关模块
小编想要通过查看 项目依赖包的关系找出 依赖ugorji的包仍然选择先问了chatgpt然后得到了
go mod graph 命令会打印出模块依赖图 只输出文字很难查找graphpkg 是一个命令行工具可以将 Go 模块的依赖关系转换成图形格式
npm install -g graphpkg
graphpkg dot | dot -Tpng graph.pngmodgraphviz 是一个 Go 工具可以将 go mod graph 的输出转换成 Graphviz 的 DOT 格式
go get -u github.com/kisielk/modgraphviz
go mod graph | modgraphviz | dot -Tpng -o modgraph.pnggodepgraph 是一个简单的工具用于生成 Go 项目依赖关系的图形表示。
go get -u github.com/kisielk/godepgraph
godepgraph -s github.com/your/module | dot -Tpng -o dependency-graph.pnggoviz 是另一个可视化工具它能够生成 Go 包依赖关系的图形表示。
go get -u github.com/kyroy/goviz
goviz -p github.com/your/module | dot -Tpng -o dependency-graph.pnggmchart 直接将包依赖关系在浏览器呈现使用简单
# 安装
go get -u github.com/PaulXu-cn/go-mod-graph-chart/gmchart
# 在项目下使用
go mod graph |gmchart最终小编选择了最简单又很强大的gmchart 在浏览器上得到了 依赖包的可视化图 这张图里展现的依赖关系很多要怎么查找想要的信息呢
查找依赖包
首先根据下面的错误提示定位到是 ugorji存在多版本问题 那么就可以根据这个信息全局搜索定位了 1gin下引用了ugorji 1.2.7 2viper引用了 ugorji 1.1.4 好了问题已经定位到了。viper使用了低版本的ugorji只需要引用将ugorji 版本和gin下使用的版本一致即可。
解决问题
上面定位到使用了低版本的ugorji因此小编赶紧取viper的github上从最新版本查找ugorji使用的版本 发现最新版本已经没有引用ugorji了。 接着小编直接修改了本地项目引用的viper版本到最新 再继续执行如下操作
go clean -modcache
go mod tidy执行成功啦~
总结
遇到ambiguous import时有如下几个步骤
使用go可视化项目依赖工具可视化依赖包关系
# 安装
go get -u github.com/PaulXu-cn/go-mod-graph-chart/gmchart
# 在项目下使用
go mod graph |gmchart根据错误提示在打开的图片里搜索关键字ugorji定位使用该模块的上级依赖包找出使用ugorji依赖更低的上一级去github上找最新版本下ugorji的版本直到使用的依赖包一致若上述步骤不ok可将使用ugorji的所有依赖去github上搜索最新版本是否一致或使用替代的依赖项
参考文档
go mod graph 可视化——gmchart chatgpt