首页 > 解决方案 > Go mod 使用最新版本,而不是提交

问题描述

我想根据上次提交而不是上次发布来使用库。所以我得到了那个版本:

$ go get github.com/epsagon/epsagon-go@636ea43

现在在包缓存中我有:

$ cd /Users/sgetman/go/pkg/mod/github.com/epsagon && ls

epsagon-go@v1.14.0                  epsagon-go@v1.14.1-0.20201105151128-636ea43d1943

但是当我尝试go build, go test, go mod tidy:

go: finding module for package github.com/epsagon/epsagon-go/epsagon/wrappers/gin
github.com/nexmoinc/neru-runtimelib/router imports
        github.com/epsagon/epsagon-go/epsagon/wrappers/gin: module github.com/epsagon/epsagon-go@latest found (v1.14.0), but does not contain package github.com/epsagon/epsagon-go/epsagon/wrappers/gin

同时我的go.mod:

require (
    ...
    github.com/epsagon/epsagon-go v1.14.1-0.20201105151128-636ea43d1943
    ...
)

go.sum:

github.com/epsagon/epsagon-go v1.14.0 h1:Tq7qyoyDs2aUCc/UsQEHFt89aXVdUmjWXHwvS5kfSC4=
github.com/epsagon/epsagon-go v1.14.1-0.20201105151128-636ea43d1943 h1:kJGvRsqRfo1h8vEEGajWa+szA9965Epw83Fm3UmmwEc=
github.com/epsagon/epsagon-go v1.14.1-0.20201105151128-636ea43d1943/go.mod h1:Q73D3EhfzqmQa6m6Xi5n0Ugw9l6XSNGCzMcozsFMD1c=

你能帮我整理一下为什么go mod依赖于最新版本,而不是我提供的版本吗?

标签: gogo-modules

解决方案


go命令正在检查latest版本,因为 packagegithub.com/nexmoinc/neru-runtimelib/router包含import类似import "github.com/epsagon/epsagon-go/epsagon/wrappers/gin".

github.com/epsagon/epsagon-go v1.14.1-0.20201105151128-636ea43d1943不包含这样的包,因此该go命令试图确定它是否可以将该模块升级到较新的版本以查找导入的包。

如果你运行go build -mod=readonly,你会希望得到更清晰的错误信息。(请注意,这-mod=readonly将是 Go 1.16 的默认设置:请参阅https://tip.golang.org/doc/go1.16#modules。


推荐阅读