你使用的Go版本是什么(go version
)?
这个bug最初是在尝试为我们的Go项目设置一个CI时发现的,当时使用的是Go 1.17.5
。
它也可以在最新的发布和构建版本中重现,例如:
go version devel go1.19-8542bd8938 Thu May 19 19:32:35 2022 +0000 darwin/amd64
你做了什么?
- 转到你的任何一个Go项目:
cd $GOPATH/src/github.com/foo/bar
- 确保你启用了模块:
export GO111MODULE=on
- 确保你启用了vendor标志:
export GOFLAGS="-mod=vendor"
- 确保那里没有
vendor
目录:rm -rf vendor
或者如果你已经重命名了它mv vendor backup_vendor
。 - 运行
go fmt ./...
你期望看到什么?
我期望会得到一个错误:
go: open $GOPATH/src/github.com/foo/bar/vendor/modules.txt: no such file or directory
你看到了什么?
github.com/emicklei/go-restful/v3@v3.7.1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
...
...
...
(skip the rest of them for brevity)
...
To ignore the vendor directory, use -mod=readonly or -mod=mod.
To sync the vendor directory, run:
go mod vendor
它抱怨我的模块(实际上,对于每一个模块)与我的供应商不同步,但实际上从一开始就从未进行过比较,因为根本没有可与之比较的vendor/modules.txt
。
2条答案
按热度按时间bbuxkriu1#
https://go.dev/cl/407474提到了这个问题:
cmd/go: improve err msg when vendors dir is missing but required
vbopmzt12#
CC @bcmills@matloob