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