如果vendors/modules.txt文件不存在,cmd/go会显示误导性的错误信息,

nuypyhwy  于 5个月前  发布在  Go
关注(0)|答案(2)|浏览(48)

你使用的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

你做了什么?

  1. 转到你的任何一个Go项目:cd $GOPATH/src/github.com/foo/bar
  2. 确保你启用了模块:export GO111MODULE=on
  3. 确保你启用了vendor标志:export GOFLAGS="-mod=vendor"
  4. 确保那里没有vendor目录:rm -rf vendor 或者如果你已经重命名了它 mv vendor backup_vendor
  5. 运行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

bbuxkriu

bbuxkriu1#

https://go.dev/cl/407474提到了这个问题:cmd/go: improve err msg when vendors dir is missing but required

相关问题