供应商链码具有错误的依赖关系

时间:2019-07-05 22:08:25

标签: hyperledger-fabric hyperledger-chaincode chaincode vendoring

我的链码具有以下目录结构

$GOPATH/myproject/chaincode/mycc/go
├── mycc.go
├── chaincode
│   └── chaincode.go
└── vendor
    ├── github.com
    ├── ...

由于使用了超级账本cid软件包,因此我使用供应商,并且链代码旁边有vendor目录。现在,对于{test},mycc.go仅包含main函数:

package main

import (
    "myproject/chaincode/mycc/go/chaincode"
    "github.com/hyperledger/fabric/core/chaincode/shim"
)

func main() {
    err := shim.Start(new(chaincode.MyChaincode))
    if err != nil {
        logger.Error(err.Error())
    }
}

chaincode.go实现了其余的链码,包括带有MyChaincodeInit等的Invoke结构。相关的导入与{ {1}}:

mycc.go

在链代码的实例化过程中,带有依赖项的某些东西似乎混在一起,因为我收到了错误消息:

"github.com/hyperledger/fabric/core/chaincode/shim"

很显然,似乎内部链码包中的导入被错误地解决了,供应商目录在路径中出现了两次。

2 个答案:

答案 0 :(得分:1)

您的init方法似乎未正确初始化,因此请检查链码是否已正确安装或实例化。您只需查找实例化的chaincode docker容器即可签出。

答案 1 :(得分:1)

构建链码的fabric-ccenv容器试图是“有帮助的”,但在容器内的GOPATH中包含了shim。它还最终还包括shim/ext/...文件夹,但不幸的是实际上并没有正确包含它们的传递依赖项。

当您将其与chaincode安装/软件包命令也试图对您有所帮助以及您尝试进行销售相结合时,事情变得很丑陋。

我实际上只是推送了针对1.4.2的修复程序来解决fabric-ccenv问题。