如何防止 go mod tidy 查找替换的模块路径

fly*_*lyx 4 go go-modules

考虑以下设置:

\n
\n

go.mod

\n
module example.com/main\n\nrequire example.com/sub dummy\nreplace example.com/sub => ./sub\n
Run Code Online (Sandbox Code Playgroud)\n
\n

sub/go.mod

\n
module example.com/sub\n
Run Code Online (Sandbox Code Playgroud)\n
\n

go mod tidy如果我在主目录中运行,它会发出

\n
go: errors parsing go.mod:\n[\xe2\x80\xa6]/go.mod:3: unrecognized import path "example.com/sub": reading https://example.com/sub?go-get=1: 404 Not Found\n
Run Code Online (Sandbox Code Playgroud)\n

即使 URL 存在,我的理解是,由于该replace指令,go mod与原始源没有任何关系,因为我替换了它。那么为什么它要查询源呢?我怎样才能防止这种情况发生?

\n

我已经尝试设置GOPROXY=off导致

\n
[\xe2\x80\xa6]/go.mod:3: module lookup disabled by GOPROXY=off\n
Run Code Online (Sandbox Code Playgroud)\n

Von*_*onC 5

看看go mod tidy,首先尝试(Go 1.16+,来自问题 26603):

go mod tidy -e
Run Code Online (Sandbox Code Playgroud)

尽管加载包时遇到错误,该-e标志仍tidy​​尝试继续。