Go 如何停止在“转到项目外部”中自动导入导入的项目?
我有我的项目,有许多相互导入和导入外部包的包。当我对我的一个低级别软件包进行更改,然后将其推到git时,它就可以正常工作了。当我将其用于另一个工作正常的项目时,我现在遇到了这样一个错误:Go 如何停止在“转到项目外部”中自动导入导入的项目?,go,go-modules,Go,Go Modules,我有我的项目,有许多相互导入和导入外部包的包。当我对我的一个低级别软件包进行更改,然后将其推到git时,它就可以正常工作了。当我将其用于另一个工作正常的项目时,我现在遇到了这样一个错误: module declares its path as: github.com/xdg-go/scram but was required as: github.com/xdg/scram 我的代码都没有直接使用这两种方法。看起来它自动更新了一些较低级别的外部包,并破坏了用于旧导入的东西 如何查找导入
module declares its path as: github.com/xdg-go/scram
but was required as: github.com/xdg/scram
我的代码都没有直接使用这两种方法。看起来它自动更新了一些较低级别的外部包,并破坏了用于旧导入的东西
如何查找导入错误名称的包或停止所有自动更新?github.com/xdg/scram上的文件声明自己为github.com/xdg go/scram
:
应更新go.mod
文件以反映正确的导入路径。github.com/xdg/scram上的文件声明自己为github.com/xdg go/scram
:
应更新
go.mod
文件以反映正确的导入路径。不幸的是,如果此模块是间接依赖项,最好的修复方法是更新您导入的任何直接导入它的项目
如果不选择此选项,则此错误的解决方案是在本地克隆有问题的存储库,并在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
文件
当然,这样做的缺点是,无论您计划在哪里获取模块,都必须复制这种姑息性修复
另请注意:
只是一个使用旧导入路径导入其中一个包的项目的随机示例divjotarora/mgo
- 我以
为例,因为我找不到导入xdg/stringprep
的模块,但显然来自同一问题xdg/scram
了解为什么某个包被列为项目的依赖项go mod why
显示完整的依赖关系图。输出为go mod graph
格式
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
文件
当然,这样做的缺点是,无论您计划在哪里获取模块,都必须复制这种姑息性修复
另请注意:
只是一个使用旧导入路径导入其中一个包的项目的随机示例divjotarora/mgo
- 我以
为例,因为我找不到导入xdg/stringprep
的模块,但显然来自同一问题xdg/scram
了解为什么某个包被列为项目的依赖项go mod why
显示完整的依赖关系图。输出为go mod graph
格式
go mod why
,或go mod graph
显示完整的依赖项图(输出为
格式)要找出导入某些依赖项的原因,请使用go mod why
或go mod graph
显示完整的依赖项图(输出为
格式)