我刚才在升级x/tools中的x/mod后遇到了这个问题,从x/tools/gopls模块运行测试时出现了错误:
[gopls]> go test ./internal/regtest/workspace
go: golang.org/x/tools@v0.1.7 requires
golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3: missing go.sum entry; to add it:
go mod download golang.org/x/mod
[gopls]> go mod download golang.org/x/mod
[gopls]> go test ./internal/regtest/workspace
go: golang.org/x/tools@v0.1.7 requires
golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3: missing go.sum entry; to add it:
go mod download golang.org/x/mod
错误信息建议go mod download
可以修复缺失的go.sum条目,但这不起作用。我不得不执行go mod tidy
。
这个建议能否更准确一些?
这个问题看起来与#46528相似,但不完全相同。如果有其他重复的问题,请道歉。
CC @bcmills@matloob
5条答案
按热度按时间szqfcxe21#
我猜这是在尖端使用了
go
(接近1.18)?pxy2qtax2#
假设这是在接近1.18的时刻使用的$go at tip$。
是的:$x_1m_0n_1x$
68bkxrlz3#
复制:
agyaoht74#
这是一个关于
replace
、go mod download
和懒加载模块之间的边缘情况交互。我认为发生的事情是:golang.org/x/mod
的版本在gopls/go.mod
、go mod download
中被明确列出,因此go mod download
认为该版本(v0.5.1
)是准确的,不会加载完整的模块图。go test ./internal/regtest/workspace
确实加载了x/tools/go.mod
,因为它从x/tools
加载了一个包,而加载包会触发对模块依赖项的抽查。这个抽查揭示了模块图中的两个错误:一个是图的根节点上的x/mod
版本不是选定的版本,另一个是模块图中的一些节点缺少校验和。这可能需要更多的思考来解决。也许如果我们无法加载模块图,我们应该在报告校验和错误之前报告任何已知的版本不一致问题。
2lpgd9685#
我今天在franz-go遇到了一个看起来相同的问题。
运行
go mod tidy
解决了这个问题,与go.sum
的差异如下:如果能解决这个问题就太好了——它非常令人困惑!