Go build 失败:使用 go mod 文件运行“go build”时“下载不一致的图块”

我刚刚开始一个项目并想使用 go 模块。我创建了一个具有少量功能的新仓库,但它拒绝构建。我已经在go build没有模块的情况下进行了测试,它工作得很好。错误信息:

C:\Users\gledr\Polyapp_Apps\gocode\src\gitlab.com\polyapp\go-wasm-mvc>go build go: 提取 github.com/rs/cors v1.7.0 验证 github.com/rs/cors@v1 .7.0:github.com/rs/cors@v1.7.0:初始化 sumweb.Conn:检查树#187855:下载的图块不一致

这个错误是什么意思?

我认为这个错误意味着我必须重新下载相关的包,即使包在没有 go 模块的情况下也可以工作!?

关于我的项目的注释

  • 标准库导入按预期工作

  • 零非标准库导入似乎有效

  • go build如果我删除 go.mod 但失败了go mod init go build

  • 你可以在这里克隆项目:https ://gitlab.com/polyapp-open-source/go-wasm-mvc (显然我还没有写过一个单一的功能......)

  • 你也可以go get gitlab.com/polyapp-open-source/go-wasm-mvc项目

尝试解决问题

  • 没有类似的 Stack Overflow 问题(“下载的不一致的磁贴”对我来说只有 2 个谷歌结果)

  • 抛出错误的代码在这里:https ://github.com/golang/mod/blob/master/sumdb/tlog/tile.go

  • 根据引发错误的代码,看来我必须删除失败的下载(即使它可以在没有 go mod 的情况下工作?!?)。我这样做了。我删除了几个子目录下 $GOPATH/pkg 中的相关文件夹,并删除了 $GOPATH/src 中的源,但是当我这样做时,它仍然会抛出错误

  • 我尝试使用go build -d github.com/blahblahblah重新下载文件,但它显然什么也没做

  • 由于此处看到的 1.13 的 go sum 提案可能存在此检查(ctrl+f 表示“inconsis”):https ://go.googlesource.com/proposal/+/master/design/25530-sumdb.md

  • 如果你阅读了上面的 go sum 提案,它会说“没有 go 命令(只有一个手册rm -rf $GOPATH/pkg)会清除最新观察到的树大小和哈希的内存”。我相信这就是我所处的情况,但是当我删除 $GOPATH 中的子包时,它仍然失败。

  • 本着保存我的 $GOPATH/pkg 文件夹的精神,我尝试在此处删除缓存:$GOPATH/pkg/mod/cache/download/github.com/[package name]但奇怪的是,尽管删除缓存触发了新的“go get”,但重新下载的文件也有不一致的图块!根据这个经验,我认为 go sum <-> $GOPATH/pkg 验证有些奇怪。

go env

set GO111MODULE=

set GOARCH=amd64

set GOBIN=

set GOCACHE=C:\Users\gledr\AppData\Local\go-build

set GOENV=C:\Users\gledr\AppData\Roaming\go\env

set GOEXE=.exe

set GOFLAGS=

set GOHOSTARCH=amd64

set GOHOSTOS=windows

set GONOPROXY=

set GONOSUMDB=

set GOOS=windows

set GOPATH=C:\Users\gledr\Polyapp_Apps\gocode

set GOPRIVATE=

set GOPROXY=https://proxy.golang.org,direct

set GOROOT=C:\Go

set GOSUMDB=sum.golang.org

set GOTMPDIR=

set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64

慕桂英546537
浏览 728回答 2
2回答

繁花不似锦

该错误意味着实际校验和与校验和数据库中的可用校验和之间的差异。从一个地方拉入依赖项会有所帮助,但根据所描述的情况,即使依赖项的版本是不变的,你的依赖项也会发生变化。您最近是否迁移到 Go 1.13?或者您之前使用过不同的 GOPROXY?

至尊宝的传说

我最终将 $GOPATH/pkg 目录重命名为 $GOPATH/old_pkg - 相当于rm -rf $GOPATH/pkg我在问题中链接的 Go SUM 提案中的建议。因此,必须重新下载所有依赖项,但它现在可以工作了。删除 $GOPATH/pkg 文件夹也导致我的另一个更大的项目开始工作。重新下载所有依赖项只需要几分钟。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go