【问题标题】:go mod fails to find version v0.0.0-00010101000000-000000000000 of a dependencygo mod 找不到依赖的版本 v0.0.0-00010101000000-000000000000
【发布时间】:2021-05-19 16:12:39
【问题描述】:

我正在尝试通过 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 hyperledger-fabric go-modules


    【解决方案1】:

    问题:

    1. 您的确切 go.mod 文件是什么?
    2. 您是否有针对github.com/hyperledger/fabric-sdk-go 的任何replace 指令?
    3. 如果您目前没有,您曾经有过吗?

    如果您有一个replace 指令但没有相应的require 指令并且go 命令会自动为您添加一个require 指令,则通常会显示长版本v0.0.0-00010101000000-000000000000长版。

    这很好,但我想知道您是否做了类似添加replace 的操作,但后来删除了replace,同时在require 中保留了长版本v0.0.0-00010101000000-000000000000。或者类似的东西。

    如果你:

    1. 删除您可能拥有的用于 github.com/hyperledger/fabric-sdk-go 的任何 replace 指令
    2. requiregithub.com/hyperledger/fabric-sdk-go 更改为:
     require github.com/hyperledger/fabric-sdk-go latest
    
    1. 运行go list -m all

    此外,如果还没有,您应该使用最新版本的 Go 1.13,它修复了一些错误,但通常也有更好的错误消息。

    【讨论】:

      【解决方案2】:

      这发生在我身上是因为使用了替换标志并删除了替换标志。这可以通过使用以下两个命令来纠正。

      go mod edit -droprequire=github.com/hyperledger/fabric-sdk-go
      

      以上命令删除依赖

      go mod tidy
      

      以上命令重新下载依赖。

      【讨论】:

      • 请确保根据您的错误使用正确的包名称。
      【解决方案3】:

      建议的诊断

      我建议在控制台(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 的差异)

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 2019-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-25
        • 2020-03-29
        相关资源
        最近更新 更多