项目一开始使用的是 fabric1.0 但后续因为需要对用户身份进行管理选择使用cid库,但是cid库在 fabric 1.1中。
使用import 导库
"github.com/hyperledger/fabric/core/chaincode/lib/cid"
但是在 cli端安装链码时 出现错误 报 not find package opt/src...../cid 很纳闷已经将 fabric 版本切换至 1.1 且手动也能找到 cid库
尝试解决方法:
1. 安装 Govendor 在 fabric 目录下
govendor add +external
安装链码不在报错,但是安装的链码并不是我想要的。删除掉错误链码后链码实例化报错,该方法无法解决问题。
2.设想 Shim包没有报错 可能 安装链码时使用的时 docker容器中的包,可能镜像文件仍然是1.0 所以在docker-compose.yaml 中修改 orderer 与 peer 所使用的image 版本
image: hyperledger/fabric-orderer:x86_64-1.0.0
修改:
image: hyperledger/fabric-orderer:x86_64-1.1.0
仍然找不到库
3.最终解决方法
https://stackoverflow.com/questions/49560104/cannot-find-package-cid-in-goroot-or-gopath
docker-compose cli端 volume映射
./../chaincode:/opt/gopath/src/github.com/
将 hyperleger/fabric/core/chaincoe/lib/cid 放到 chaincode 目录下 成功解决问题
PS:这个问题困扰了我一周左右 虽然问题结局了还是很疑惑 shim包为什么能找到 有没有人能解释一下 fabric 中 安装链码时使用的依赖是怎么找的