与 go get 不一致的内部包错误

Inconsistent internal package errors with go get

我正在尝试 go get go.etcd.io/etcd/tools/benchmark

以前这很有效,完美无缺。然而,当我目前尝试这样做时,我也没有遇到任何错误,而且我已经失败了:

go/src/go.etcd.io/etcd/vendor/google.golang.org/grpc/balancer_conn_wrappers.go:28:2: use of internal package google.golang.org/grpc/internal/buffer not allowed
go/src/go.etcd.io/etcd/vendor/google.golang.org/grpc/clientconn.go:49:2: use of internal package google.golang.org/grpc/internal/resolver/dns not allowed
go/src/go.etcd.io/etcd/vendor/google.golang.org/grpc/clientconn.go:50:2: use of internal package google.golang.org/grpc/internal/resolver/passthrough not allowed

我第一次 运行 它在一个新的 go-1.13 安装上它工作了,但是接下来的几次它就失败了,就像上面那样。

据我所知,在过去的 8 个月里,回购协议没有改变,我尝试了各种 golang 版本,但到目前为止都失败了(除了 go-1.13第一次尝试...)。

如能提供调试帮助,我们将不胜感激!

我想您可以尝试从 go.etcd.io/etcd repo 中删除 vendor 文件夹。同时禁用 vendoring mode。它应该可以工作。

我有解决方法和官方修复程序。

解决方法:

这里我定义了一个 go.mod 然后使用了以前版本的库。

官方修复:

这是上游修复的,因此没有其他人会遇到这种情况。