問題
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 成功。