首页 > 解决方案 > Endorsers 实例化 Chaincode 错误“找不到包”

问题描述

我创建了一个链码,并将一个包导入其中。

import (
"bytes"
"encoding/json"
"fmt"
"strings"
"golang.org/x/crypto/bcrypt"
"github.com/hyperledger/fabric/core/chaincode/shim"
    pb "github.com/hyperledger/fabric/protos/peer")

我可以将该链码安装到所有背书人。但是当我将它实例化给所有背书者时,它遇到了错误:

endorser failed with error starting container: error starting container: Failed to generate platform-specific docker build: Error returned from build: 1 "/chaincode/input/src/github.com/marbles02/marbles_chaincode.go:85:2: cannot find package "golang.org/x/crypto/bcrypt" in any of:
/usr/local/go/src/golang.org/x/crypto/bcrypt (from $GOROOT)
/chaincode/input/src/golang.org/x/crypto/bcrypt (from $GOPATH)
/go/src/golang.org/x/crypto/bcrypt

我试图将golang.org/x/crypto/bcrypt包复制到/usr/local/go/src/根目录中,但它有同样的错误。

标签: gohyperledger-fabrichyperledger-chaincode

解决方案


尝试使用以下命令在链代码目录中安装依赖项:

  1. go mod init将创建go.modgo.sum文件。
  2. go mod vendor用于创建vendor目录。

此外,如果使用fabric:v2.X.Xthenshim并将peer包移动到不同的库。所以在chaincode.go文件中将peer和包更改为下面。shim

  1. peer --> github.com/hyperledger/fabric-protos-go/peer
  2. shim -->github.com/hyperledger/fabric-chaincode-go/shim

确保在运行命令之前添加peer和更改,或者如果您已经有一个目录,然后尝试然后命令更新软件包。shimgo mod initvendorgo mod tidygo mod vendor


推荐阅读