如何防止 go mod tidy 查找替换的 module 路径
How to prevent go mod tidy from looking up a replaced module path
考虑以下设置:
go.mod
module example.com/main
require example.com/sub dummy
replace example.com/sub => ./sub
sub/go.mod
module example.com/sub
如果我在主目录中运行 go mod tidy
,它会发出
go: errors parsing go.mod:
[…]/go.mod:3: unrecognized import path "example.com/sub": reading https://example.com/sub?go-get=1: 404 Not Found
即使 URL 存在,我的理解是由于 replace
指令,go mod
与原始来源没有任何关系,因为我替换了它。那为什么要查询来源呢?我该如何预防?
我已经尝试设置 GOPROXY=off
结果是
[…]/go.mod:3: module lookup disabled by GOPROXY=off
正在查看go mod tidy
, try first (Go 1.16+, from issue 26603):
go mod tidy -e
The -e
flag makes tidy
attempt to proceed despite errors encountered while loading packages.
只需分配一个合适的版本号,如 v0.0.0
,它就会工作。
Go 模块使用语义版本控制模型,不能像 dummy
那样有任意版本。 Module version numbering.
中描述了支持的版本格式
额外注意事项:避免嵌套 Go 模块。这可能会导致设置混乱以及后续工具出现问题。
考虑以下设置:
go.mod
module example.com/main
require example.com/sub dummy
replace example.com/sub => ./sub
sub/go.mod
module example.com/sub
如果我在主目录中运行 go mod tidy
,它会发出
go: errors parsing go.mod:
[…]/go.mod:3: unrecognized import path "example.com/sub": reading https://example.com/sub?go-get=1: 404 Not Found
即使 URL 存在,我的理解是由于 replace
指令,go mod
与原始来源没有任何关系,因为我替换了它。那为什么要查询来源呢?我该如何预防?
我已经尝试设置 GOPROXY=off
结果是
[…]/go.mod:3: module lookup disabled by GOPROXY=off
正在查看go mod tidy
, try first (Go 1.16+, from issue 26603):
go mod tidy -e
The
-e
flag makestidy
attempt to proceed despite errors encountered while loading packages.
只需分配一个合适的版本号,如 v0.0.0
,它就会工作。
Go 模块使用语义版本控制模型,不能像 dummy
那样有任意版本。 Module version numbering.
额外注意事项:避免嵌套 Go 模块。这可能会导致设置混乱以及后续工具出现问题。