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

本文解决了一个基于Fabric 1.0区块链网络环境下,使用JS客户端连接失败的问题。作者通过调整Node.js和npm版本,并更新相关依赖包及重建gRPC组件成功解决了连接超时错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

基于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网络发送请求

表单填入1001,该id为我之前插入区块链网络中的数据(用户信息)的key,通过向区块链网络发送key来获取相应的values.
在这里插入图片描述
然后获取返回结果如下:
在这里插入图片描述

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

命令如下:

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

输出结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值