解决运行Fabric2.0中first-network时,byfn.sh 180: go:command not found;error getting chaincode bytes: failed to calculate dependencies: incomplete package两处错误。
文章目录
前言
在运行first-newwork时候报错:byfn.sh 180: go:command not found。并且最后报错: error getting chaincode bytes: failed to calculate dependencies: incomplete package。通过手动切换目录将依赖包下载并且注释源码,最终解决问题,成功出现ALL GOOD标识。
一、运行出错
由于在启动时,报出 byfn.sh 180: go:command not found。
报错所在行。
bnfy.sh中的源码:
pushd ../chaincode/abstore/go
源码解析:通过pushd命令将路径从 /usr/local/src/hyperleger/fabric/scripts/fabric-samples/first-network 切换到 /usr/local/src/hyperleger/fabric/scripts/fabric-samples/chaincode/abstore/go 路径下,执行 GO111MODULE=on go mod vendor。再通过popd命令 从/usr/local/src/hyperleger/fabric/scripts/fabric-samples/chaincode/abstore/go 路径下返回到原来的
/usr/local/src/hyperleger/fabric/scripts/fabric-samples/first-network 路径。
如下代码是将链码的依赖包下载到vendor文件夹中:
GO111MODULE=on go mod vendor
在执行过程中,通过pushd命令和popd命令将路径进行了转换。
二、解决方案:源码修改
对于运行过程中出现上述错误,解决的办法如下:
1.手动切换路径从 first-network 到abstore/go中
cd /usr/local/src/hyperleger/fabric/scripts/fabric-samples/chaincode/abstore/go
2.运行下载命令:
GO111MODULE=on go mod vendor
切换过程和命令行如下图所示:
在执行命令之前 absore/go中的文件如下图所示
3.执行命令完成链码依赖包的下载,下载完毕之后的abstore/go中的文件如下图所示:
4.手动切换路径从abstore/go到 first-network 中:
cd /usr/local/src/hyperleger/fabric/scripts/fabric-samples/first-network
5.对first-network中的启动文件 byfn.sh 中的源码进行修改::
vim byfn.sh
6.修改如下:
将GO111MODULE=on go mod vender 进行注释。
7.修改完毕之后,按下ESC、:、wq! 保存并退出。
8.重新启动first-network:
sudo ./byfn.sh
执行过程没有报错
9.first-network开始启动。
10.ALL GOOD出现,运行成功。
11.关闭first-network:
sudo ./byfn.down
12.关闭过程如下,关闭成功:
总结
在启动Fabric2.0的示例代码first-network时遇到两处错误:1. byfn.sh 180: go:command not found;2.error getting chaincode bytes: failed to calculate dependencies: incomplete package。第一个错误是由于执行 GO111MODULE=on go mod vendor,下载链码依赖包时出错,通过手动切换目录到 /usr/local/src/hyperleger/fabric/scripts/fabric-samples/chaincode/abstore/go 路径下,执行 GO111MODULE=on go mod vendor解决。第二个错误是由于链码不完全造成,解决办法是将 byfn.sh中的 GO111MODULE=on go mod vendor注释掉,使代码跳过,自动去abstore/go下寻找vendor包中的链码依赖。最终解决问题,出现ALL GOOD!