GOPATH/GOROOT Hyperledger fabric 链码设置

GOPATH/GOROOT setup for Hyperledger fabric chaincode

我已经在 Hyperledger Fabric 1.4.7 中完成了基本设置,并让所有节点都加入了频道。在 golang 中探索链码后,我开始尝试 chaincode install 命令,但我在这一步遇到了问题。

错误

Error: error getting chaincode code mycc: path to chaincode does not exist: /home/user899/go/src/chaincode

当我刚刚 运行 go run chaincode.go

错误

chaincode.go:7:2: cannot find package "github.com/hyperledger/fabric-chaincode-go/shim" in any of: /usr/lib/go-1.14/src/github.com/hyperledger/fabric-chaincode-go/shim (from $GOROOT) /home/user899/go/src/github.com/hyperledger/fabric-chaincode-go/shim (from $GOPATH) chaincode.go:8:2: cannot find package "github.com/hyperledger/fabric-protos-go/peer" in any of: /usr/lib/go-1.14/src/github.com/hyperledger/fabric-protos-go/peer (from $GOROOT) /home/user899/go/src/github.com/hyperledger/fabric-protos-go/peer (from $GOPATH)

环境

echo $GOPATH
/home/user899/go

Chaincode location
/home/user899/SoloNetwork/chaincode

谁能帮忙。

谢谢

我正在回答我自己的问题。这是解决方案,我不知道在 Go 中需要遵循的 directory structure

所以首先,我在位于 home/dev/go

下的终端中使用 go env 检查了我的 GOPATH(通常是我们可以编写所有 go 文件的工作区)

关于目录结构,应该遵循以下内容:-

$GOPATH + /src/github.com/chaincode,所以最终结构将是 home/dev/go/src/github.com/chaincode inside chaincode。我可以放置所有的 Go 文件。

所以在从 here 获取链代码文件后,我将其放在上面的位置并执行了以下命令

  • go mod init
  • go mod tidy

然后,我能够执行 peer chaincode install commad

peer chaincode install -n mycc -p "github.com/chaincode" -v 1.0

命令中-p "github.com/chaincode"是我创建的文件夹名称

所以最后链码路径是由这些创建的:$GOPATH + src + -p flag

如果有人遇到与二进制相关的问题,请将您的 GOROOT 路径设置为安装 go 的 bin 位置。