问题
Fabric版本:2.0.1
构建完外部链码时,报错undefined: shim.ChaincodeServer。查阅官方文档,发现写法没有任何问题。去vendor文件夹,查看shim源码发现确实没有ChaincodeServer的定义,但是官方文档上写的2.0确实新增了接口。
由此猜测可能是依赖版本的问题。
解决方案
之前依赖版本:
require (
github.com/hyperledger/fabric-chaincode-go v0.0.0-20190823162523-04390e015b85
github.com/hyperledger/fabric-protos-go v0.0.0-20190821214336-621b908d5022
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 // indirect
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a // indirect
golang.org/x/text v0.3.2 // indirect
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 // indirect
)
修改后依赖版本(fabric-chaincode-go 版本变更为v0.0.0-20200424173110-d7076418f212):
require (
github.com/hyperledger/fabric-chaincode-go v0.0.0-20200424173110-d7076418f212
github.com/hyperledger/fabric-protos-go v0.0.0-20190919234611-2a87503ac7c9
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 // indirect
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a // indirect
golang.org/x/text v0.3.2 // indirect
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 // indirect
)
注意如果之前生成了vendor文件夹,先删除,重新执行go mod vendor,然后继续build ,build 成功。