fabric invoke(query)报错Error: Failed to connect before the deadline URL:grpcs://localhost:7051

背景

基于fabric1.0搭建了一个区块链网络(1order,2org,4peer,1cli),安装本地chaincode之后,通过cli容器调用chaincode正常。然后编写getUserInfo.js(因为安装到网络中的chaincode有一个获取所有用户信息的功能)来获取用户信息。

问题描述

在cli容器中通过命令:

peer chaincode query -C mychannel -n mycc -c '{"Args":["getUserInfo","1001"]}'

获取信息正常,通过运行js脚本:

node getUserInfo.js

出现错误:

Error: Failed to connect before the deadline URL:grpcs://localhost:7051

详细报错结果如下图所示:

(上图是通过网页来调用getUserInfo.js,后台出现的错误代码,与直接运行运行node getUserInfo.js的报错结果一致,可怜我只保留了上图!)

解决办法

该问题的主要解决思路有以下几点:

1.检查node npm的版本

这种错误一般是fabric版本与node npm不匹配导致的,fabric版本目前最新1.4,如果用老版本的话node 和npm版本不能过高,可参考我最终运行成功的版本:

fabric 1.0.0
node 8.12.0
npm 6.4.1

同时还要注意js代码里面调用的fabric-ca-client与fabric-client还有grpc等依赖包的版本,下面是我的版本

"grpc": "^1.6.0",
"fabric-ca-client": "^1.0.0",
"fabric-client": "^1.0.0"
2.确定版本后npm install导入依赖包

可以先删除以前的依赖包,然后重新导入

rm -r node_modules
npm install
3.如果版本更改之后还报错,运行一下如下面命令(重要!!!):
npm rebuild

运行后截图如下:
fabric invoke(query)报错Error: Failed to connect before the deadline URL:grpcs://localhost:7051_第1张图片
完成之后问题解决了!!!

结果如下:

通过读取表单信息向fabric网络发送请求

表单填入1001,该id为我之前插入区块链网络中的数据(用户信息)的key,通过向区块链网络发送key来获取相应的values.
fabric invoke(query)报错Error: Failed to connect before the deadline URL:grpcs://localhost:7051_第2张图片
然后获取返回结果如下:
在这里插入图片描述

也可以在cli容器中运行相应命令获取相同结果

命令如下:

peer chaincode query -C mychannel -n mycc -c '{"Args":["getUserInfo","1001"]}'

输出结果如下:
fabric invoke(query)报错Error: Failed to connect before the deadline URL:grpcs://localhost:7051_第3张图片

你可能感兴趣的:(fabric)