Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何停止在“转到项目外部”中自动导入导入的项目?_Go_Go Modules - Fatal编程技术网

Go 如何停止在“转到项目外部”中自动导入导入的项目?

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 我的代码都没有直接使用这两种方法。看起来它自动更新了一些较低级别的外部包,并破坏了用于旧导入的东西 如何查找导入

我有我的项目,有许多相互导入和导入外部包的包。当我对我的一个低级别软件包进行更改,然后将其推到git时,它就可以正常工作了。当我将其用于另一个工作正常的项目时,我现在遇到了这样一个错误:

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
显示完整的依赖项图(输出为
格式)