go - 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/
根目录中,但它有同样的错误。
解决方案
尝试使用以下命令在链代码目录中安装依赖项:
go mod init
将创建go.mod
和go.sum
文件。go mod vendor
用于创建vendor
目录。
此外,如果使用fabric:v2.X.X
thenshim
并将peer
包移动到不同的库。所以在chaincode.go文件中将peer
和包更改为下面。shim
peer
-->github.com/hyperledger/fabric-protos-go/peer
。shim
-->github.com/hyperledger/fabric-chaincode-go/shim
确保在运行命令之前添加peer
和更改,或者如果您已经有一个目录,然后尝试然后命令更新软件包。shim
go mod init
vendor
go mod tidy
go mod vendor