解决first-network:error getting chaincode bytes: failed to calculate dependencies: incomplete package

解决运行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!

猜你喜欢

转载自blog.csdn.net/weixin_44750512/article/details/108313214