问题描述
我将依赖项添加到 go.mod
:
require (
github.com/labstack/echo/v4 v4.3.1
)
replace (
github.com/labstack/echo/v4 => example.com/echo/v4.git v4.3.1
)
并得到像 replace example.com/echo.git: version "v4.3.1" invalid: module contains a go.mod file,so major version must be compatible: should be v0 or v1,not v4
这样的错误。存储库中存在具有所需版本的标签。
当我尝试使用该版本时,我得到了类似 v1.2.1-0.20210520145606-2defe74d39f0
的内容,但是当我将替换部分设置为:
replace (
github.com/labstack/echo/v4 => example.com/echo/v4.git v1.2.1-0.20210520145606-2defe74d39f0
)
我收到与私有 git 服务器相关的错误 errno=Connection refused
。
你能告诉我我做错了什么以及我如何用我的私人叉替换依赖吗?
解决方法
-
确保您的回购路径准确无误。 v4.git 表示 repo 被称为 v4;如果这是真的,那没问题,但如果没有用正确的 repo 名称替换它,并在它后面保留 v4.x.x 标签。
-
如果 fork 是私有的,则 sum.golang.org 可能无法访问它。确保将 GOPRIVATE 设置为您的私有分支,这样 Go 就不会尝试获取校验和。
go env -w GOPRIVATE=example.com
如果替换存储库托管在位于 example.com/echo
的 Git 存储库中,那么替换存储库的路径可能应该是 example.com/echo.git/v4
:
replace (
github.com/labstack/echo/v4 v4.3.1 => example.com/echo.git/v4 v4.3.1
)
如果 example.com
服务器提供 go-import
metadata,那么您可以完全省略 .git
后缀:
replace (
github.com/labstack/echo/v4 v4.3.1 => example.com/echo/v4 v4.3.1
)