go mod 找不到依赖项的版本 v0.0.0-00010101000000-000000000000
go mod fails to find version v0.0.0-00010101000000-000000000000 of a dependency
我正在尝试通过 go mod 下载项目的所有依赖项;在 CLI 上执行 go mod vendor
时会出现问题。输出结果如下:
go: finding github.com/hyperledger/fabric-sdk-go v0.0.0-00010101000000-000000000000
go: github.com/hyperledger/fabric-sdk-go@v0.0.0-00010101000000-000000000000: unknown revision 000000000000
go: error loading module requirements
导入库的代码是这样的:
import (
"github.com/hyperledger/fabric-sdk-go/pkg/client/ledger"
"github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt"
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"
)
krakengosdk 是我正在处理的包的名称:
go mod init krakengosdk
有什么解决办法吗?一段时间以来,我一直在寻找任何解决方案,但没有发现任何有用的东西。
编辑:我已经将 go 版本更新到 1.13;似乎错误必须与 "github.com/hyperledger/fabric-sdk-go/test/integration@v0.0.0-20190918153951-5d7ae7a5be8f":
go get -v github.com/hyperledger/fabric-sdk-go/test/integration@latest
go: finding github.com/hyperledger/fabric-sdk-go/test/integration latest
go get: github.com/hyperledger/fabric-sdk-go/test/integration@v0.0.0-20190918153951-5d7ae7a5be8f requires
github.com/hyperledger/fabric-sdk-go@v0.0.0-00010101000000-000000000000: invalid version: unknown revision 000000000000
问题:
- 您的确切 go.mod 文件是什么?
- 你有
github.com/hyperledger/fabric-sdk-go
的 replace
指令吗?
- 如果您目前没有,您曾经有过吗?
如果您有 replace
指令但没有相应的 require
指令和 go
命令,通常会显示长版本 v0.0.0-00010101000000-000000000000
使用该长版本为您添加 require
指令。
可以,但我想知道您是否做了类似添加 replace
的操作,但后来删除了 replace
,同时保留了长版本 v0.0.0-00010101000000-000000000000
require
。或者类似的东西。
如果你会发生什么:
- 删除您可能拥有的
github.com/hyperledger/fabric-sdk-go
的任何 replace
指令
- 将
github.com/hyperledger/fabric-sdk-go
的 require
更改为:
require github.com/hyperledger/fabric-sdk-go latest
- 运行
go list -m all
此外,如果还没有,您应该使用最新版本的 Go 1.13,它修复了一些错误,但通常也有更好的错误消息。
建议的诊断
我建议在控制台中尝试这些命令 (bash/dash/fish/zsh):
# 1. Create clean project
$ mkdir /tmp/checkmods && cd /tmp/checkmods # create clean directory
$ export GO111MODULES=on
$ go version # check that version 1.13
$ go mod init main # name of package does not matter here
# 2. Install packages, check output
$ go get -v github.com/hyperledger/fabric-sdk-go/pkg/client/ledger
$ go get -v github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt
$ go get -v github.com/hyperledger/fabric-sdk-go/pkg/fabsdk
# 3. Create main.go
$ touch main.go
$ # edit main.go, add imported packages, import something from those packages
$ go mod vendor
# Do you have problems here?
# if you encounter problems:
# - play around with `go mod tidy`
# - look at `go.mod` and `go.sum`
# - `go mod graph/verify/why` - are your friends
main.go
的例子:
package main
import (
"fmt"
"github.com/hyperledger/fabric-sdk-go/pkg/client/ledger"
"github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt"
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"
)
func main() {
var (
cln &ledger.Client
rsm &resmgmt.Client
fbs &fabsdk.FabricSDK
)
fmt.Printf("%T %T %T\n", cln, rsm, fbs)
}
分析
如果遇到问题:说明你在哪一行遇到的,是什么问题。
如果干净启动一切正常:查看您的项目和干净启动之间的区别(go.sum 和 go.mod 的差异)
祝你好运!
这发生在我身上是因为使用了替换标志并删除了替换标志。这可以通过使用以下两个命令来纠正。
go mod edit -droprequire=github.com/hyperledger/fabric-sdk-go
上面的命令删除了依赖关系
go mod tidy
以上命令重新下载依赖。
错误 - go 试图为导入它的特定 module 提取的版本已过时或无效。
解决方案 - 例如在我的案例中,我收到以下错误:
go: downloading github.com/myk4040okothogodo/tutorial/gen/go/proto/books v0.0.0-00010101000000-000000000000
github.com/myk4040okothogodo/tutorial/books imports
github.com/myk4040okothogodo/tutorial/books/server imports
github.com/myk4040okothogodo/tutorial/gen/go/proto/books: github.com/myk4040okothogodo/tutorial/gen/go/proto/books@v0.0.0-00010101000000-000000000000: invalid version: unknown revision 000000000000
如你所见,我的 module "github.com/myk4040okothogodo/tutorial/books/server" 导入另一个 module "github.com/myk4040okothogodo/tutorial/gen/go/proto/books :" 这个导入抛出了上面的错误,所以我转到我的 go.mod 文件并进行以下更改:
1 module github.com/myk4040okothogodo/tutorial/books/server
2
3 go 1.18
4
5 replace github.com/myk4040okothogodo/tutorial/db => ../../db
6
7 replace github.com/myk4040okothogodo/tutorial/gen/go/proto/books => ../../gen/go/proto/books
8
9 require (
10 github.com/arangodb/go-driver v1.3.2
11 github.com/myk4040okothogodo/tutorial/db v0.0.0-00010101000000-000000000000
12 github.com/myk4040okothogodo/tutorial/gen/go/proto/books latest
13 google.golang.org/grpc v1.47.0
14 )
检查上面的第 12 行,我把 "latest" 而不是版本号,即 "v0.0.0...."
我保存文件,然后我 运行 "go mod 整理"
然后编译器将“最新”指定更改为最新版本,即在 运行 执行 mod tidy 命令后它将如下所示。
1 module github.com/myk4040okothogodo/tutorial/books/server
2
3 go 1.18
4
5 replace github.com/myk4040okothogodo/tutorial/db => ../../db
6
7 replace github.com/myk4040okothogodo/tutorial/gen/go/proto/books => ../../gen/go/proto/books
8
9 require (
10 github.com/arangodb/go-driver v1.3.2
11 github.com/myk4040okothogodo/tutorial/db v0.0.0-00010101000000-000000000000
12 github.com/myk4040okothogodo/tutorial/gen/go/proto/books v0.0.0-20220601171028-60237b9c9583
13 google.golang.org/grpc v1.47.0
14 )
PS:检查我进行更改的包,不要更改错误的导入
我正在尝试通过 go mod 下载项目的所有依赖项;在 CLI 上执行 go mod vendor
时会出现问题。输出结果如下:
go: finding github.com/hyperledger/fabric-sdk-go v0.0.0-00010101000000-000000000000
go: github.com/hyperledger/fabric-sdk-go@v0.0.0-00010101000000-000000000000: unknown revision 000000000000
go: error loading module requirements
导入库的代码是这样的:
import (
"github.com/hyperledger/fabric-sdk-go/pkg/client/ledger"
"github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt"
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"
)
krakengosdk 是我正在处理的包的名称:
go mod init krakengosdk
有什么解决办法吗?一段时间以来,我一直在寻找任何解决方案,但没有发现任何有用的东西。
编辑:我已经将 go 版本更新到 1.13;似乎错误必须与 "github.com/hyperledger/fabric-sdk-go/test/integration@v0.0.0-20190918153951-5d7ae7a5be8f":
go get -v github.com/hyperledger/fabric-sdk-go/test/integration@latest
go: finding github.com/hyperledger/fabric-sdk-go/test/integration latest
go get: github.com/hyperledger/fabric-sdk-go/test/integration@v0.0.0-20190918153951-5d7ae7a5be8f requires
github.com/hyperledger/fabric-sdk-go@v0.0.0-00010101000000-000000000000: invalid version: unknown revision 000000000000
问题:
- 您的确切 go.mod 文件是什么?
- 你有
github.com/hyperledger/fabric-sdk-go
的replace
指令吗? - 如果您目前没有,您曾经有过吗?
如果您有 replace
指令但没有相应的 require
指令和 go
命令,通常会显示长版本 v0.0.0-00010101000000-000000000000
使用该长版本为您添加 require
指令。
可以,但我想知道您是否做了类似添加 replace
的操作,但后来删除了 replace
,同时保留了长版本 v0.0.0-00010101000000-000000000000
require
。或者类似的东西。
如果你会发生什么:
- 删除您可能拥有的
github.com/hyperledger/fabric-sdk-go
的任何replace
指令 - 将
github.com/hyperledger/fabric-sdk-go
的require
更改为:
require github.com/hyperledger/fabric-sdk-go latest
- 运行
go list -m all
此外,如果还没有,您应该使用最新版本的 Go 1.13,它修复了一些错误,但通常也有更好的错误消息。
建议的诊断
我建议在控制台中尝试这些命令 (bash/dash/fish/zsh):
# 1. Create clean project
$ mkdir /tmp/checkmods && cd /tmp/checkmods # create clean directory
$ export GO111MODULES=on
$ go version # check that version 1.13
$ go mod init main # name of package does not matter here
# 2. Install packages, check output
$ go get -v github.com/hyperledger/fabric-sdk-go/pkg/client/ledger
$ go get -v github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt
$ go get -v github.com/hyperledger/fabric-sdk-go/pkg/fabsdk
# 3. Create main.go
$ touch main.go
$ # edit main.go, add imported packages, import something from those packages
$ go mod vendor
# Do you have problems here?
# if you encounter problems:
# - play around with `go mod tidy`
# - look at `go.mod` and `go.sum`
# - `go mod graph/verify/why` - are your friends
main.go
的例子:
package main
import (
"fmt"
"github.com/hyperledger/fabric-sdk-go/pkg/client/ledger"
"github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt"
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"
)
func main() {
var (
cln &ledger.Client
rsm &resmgmt.Client
fbs &fabsdk.FabricSDK
)
fmt.Printf("%T %T %T\n", cln, rsm, fbs)
}
分析
如果遇到问题:说明你在哪一行遇到的,是什么问题。
如果干净启动一切正常:查看您的项目和干净启动之间的区别(go.sum 和 go.mod 的差异)
祝你好运!
这发生在我身上是因为使用了替换标志并删除了替换标志。这可以通过使用以下两个命令来纠正。
go mod edit -droprequire=github.com/hyperledger/fabric-sdk-go
上面的命令删除了依赖关系
go mod tidy
以上命令重新下载依赖。
错误 - go 试图为导入它的特定 module 提取的版本已过时或无效。
解决方案 - 例如在我的案例中,我收到以下错误:
go: downloading github.com/myk4040okothogodo/tutorial/gen/go/proto/books v0.0.0-00010101000000-000000000000
github.com/myk4040okothogodo/tutorial/books imports
github.com/myk4040okothogodo/tutorial/books/server imports
github.com/myk4040okothogodo/tutorial/gen/go/proto/books: github.com/myk4040okothogodo/tutorial/gen/go/proto/books@v0.0.0-00010101000000-000000000000: invalid version: unknown revision 000000000000
如你所见,我的 module "github.com/myk4040okothogodo/tutorial/books/server" 导入另一个 module "github.com/myk4040okothogodo/tutorial/gen/go/proto/books :" 这个导入抛出了上面的错误,所以我转到我的 go.mod 文件并进行以下更改:
1 module github.com/myk4040okothogodo/tutorial/books/server
2
3 go 1.18
4
5 replace github.com/myk4040okothogodo/tutorial/db => ../../db
6
7 replace github.com/myk4040okothogodo/tutorial/gen/go/proto/books => ../../gen/go/proto/books
8
9 require (
10 github.com/arangodb/go-driver v1.3.2
11 github.com/myk4040okothogodo/tutorial/db v0.0.0-00010101000000-000000000000
12 github.com/myk4040okothogodo/tutorial/gen/go/proto/books latest
13 google.golang.org/grpc v1.47.0
14 )
检查上面的第 12 行,我把 "latest" 而不是版本号,即 "v0.0.0...."
我保存文件,然后我 运行 "go mod 整理"
然后编译器将“最新”指定更改为最新版本,即在 运行 执行 mod tidy 命令后它将如下所示。
1 module github.com/myk4040okothogodo/tutorial/books/server
2
3 go 1.18
4
5 replace github.com/myk4040okothogodo/tutorial/db => ../../db
6
7 replace github.com/myk4040okothogodo/tutorial/gen/go/proto/books => ../../gen/go/proto/books
8
9 require (
10 github.com/arangodb/go-driver v1.3.2
11 github.com/myk4040okothogodo/tutorial/db v0.0.0-00010101000000-000000000000
12 github.com/myk4040okothogodo/tutorial/gen/go/proto/books v0.0.0-20220601171028-60237b9c9583
13 google.golang.org/grpc v1.47.0
14 )
PS:检查我进行更改的包,不要更改错误的导入