登录
首页 >  Golang >  Go问答

如何停止在我的项目之外自动导入导入的项目?

来源:stackoverflow

时间:2024-04-21 11:15:33 287浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《如何停止在我的项目之外自动导入导入的项目?》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我的项目有许多相互导入并导入外部包的包。当我对我的一个低级别包进行更改,然后将其推送到 git 时,它就很好并且可以在该部分工作。当我将它用于另一个运行良好的项目时,我现在得到这个错误:

module declares its path as: github.com/xdg-go/scram
    but was required as: github.com/xdg/scram

我的代码都没有直接使用其中任何一个。看起来它自动更新了一些较低的外部包并破坏了旧导入的内容。

如何找出导入错误名称的软件包或停止所有自动更新?


解决方案


不幸的是,如果这个模块对您来说是间接依赖项,那么最好的解决办法是更新您导入的直接导入它的任何项目。

如果这不是一个选项,此错误的解决方案是在本地克隆有问题的存储库并在 go.mod 文件中使用 replace 指令:

module mymodule

replace github.com/xdg/stringprep => ../strprep

go 1.16.2

require (
    github.com/divjotarora/mgo v0.0.0-20190308170442-1d451d2a3149
)

其中 ../strprep 是本地计算机中所需模块的代码所在的位置,相对于项目的 go.mod 文件。

当然,这样做的缺点是,无论您计划对模块进行 go get 操作,都必须复制此姑息性修复。

另请注意:

  • divjotarora/mgo 只是使用旧导入路径导入这些包之一的项目的随机示例。
  • 我使用 xdg/stringprep 作为示例,因为我找不到导入 xdg/scram 的模块,但显然来自同一问题的 it suffers

此外,您可以使用:

  • go mod why 来找出为什么某个包被列为项目的依赖项
  • go mod graph 显示完整的依赖关系图。输出采用 格式

github.com/xdg/scram 上的 go.mod 文件将自身声明为 github.com/xdg-go/scram

应更新 go.mod 文件以反映正确的导入路径。

今天关于《如何停止在我的项目之外自动导入导入的项目?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>