Endorsers 实例化 Chaincode 时出现错误 "cannot find package"

Endorsers Instantiate Chaincode with error "cannot find package"

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

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/,但还是一样的错误。

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

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

此外,如果使用 fabric:v2.X.X,则 shimpeer 包将移动到不同的库。 所以在 chaincode.go 文件中将 peershim 包更改为下面的内容。

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

确保在 运行 go mod init 命令之前添加 peershim 更改,或者如果您已经有 vendor 目录,请尝试 go mod tidy 然后 go mod vendor 命令更新包。