构建用

时间:2018-04-28 16:02:35

标签: go docker-compose hyperledger-fabric hyperledger

当我尝试修改this hyperledger example中描述的示例时,在添加this external library以获取链代码状态的历史记录时出现了一些错误。
为什么会这样?

我使用govendor添加库,但是当我运行此命令时:

docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n $CC_NAME -l "$LANGUAGE" -v 1.0 -c $INIT_STR -P "OR ('Org1MSP.member','Org2MSP.member')"

我收到此错误:

  

错误:错误支持链码:
  rpc错误:code = Unknown desc =错误启动容器:无法生成特定于平台的docker build:从build返回的错误:2" #firstExample   chaincode / input / src / firstExample / firstStep.go:104:11:不能指定*" github.com/hyperledger/fabric/protos/ledger/queryresult" .KeyModification to kM(type *"多个赋值中的firstExample / vendor / github.com / hyperledger / fabric / protos / ledger / queryresult" .KeyModification)   chaincode / input / src / firstExample / firstStep.go:146:11:不能将*" github.com/hyperledger/fabric/protos/ledger/queryresult" .KeyModification分配给kM(类型*"多个赋值中的firstExample / vendor / github.com / hyperledger / fabric / protos / ledger / queryresult" .KeyModification)   chaincode / input / src / firstExample / firstStep.go:156:11:不能将*" github.com/hyperledger/fabric/protos/ledger/queryresult" .KeyModification分配给kM(类型*"多个作业中的firstExample / vendor / github.com / hyperledger / fabric / protos / ledger / queryresult" .KeyModification

我有一些麻烦。我确定导入了库,因为如果我使用以下命令构建编写的链代码:

go build 

我没有错误。
请帮帮我!

1 个答案:

答案 0 :(得分:0)

如果没有看到导致编译错误的实际代码,很难猜到,而您似乎没有处理由HistoryQueryIteratorInterface#Next() API甚至{{1}返回的第二个参数}。请参阅如何正确使用这些API的示例:

ChaincodeStubInterface#GetHistoryForKey()

注意:请注意// GetPreviousValue reads previous value of given key func (pm *personManagement) GetPreviousValue(params []string, stub shim.ChaincodeStubInterface) peer.Response { historyIer, err := stub.GetHistoryForKey(params[0]) if err != nil { errMsg := fmt.Sprintf("[ERROR] cannot retrieve history of key <%s>, due to %s", params[0], err) fmt.Println(errMsg) return shim.Error(errMsg) } if historyIer.HasNext() { modification, err := historyIer.Next() if err != nil { errMsg := fmt.Sprintf("[ERROR] cannot read key record modification, key <%s>, due to %s", params[0], err) fmt.Println(errMsg) return shim.Error(errMsg) } fmt.Println("Returning information about", string(modification.Value)) return shim.Success(modification.Value) } fmt.Printf("No history found for key %s\n", params[0]) return shim.Success([]byte(fmt.Sprintf("No history for key %s", params[0]))) } 会返回历史记录值和错误。