首页 > 解决方案 > 当 node.js 结构客户端应用程序在单独的节点上运行时,背书失败

问题描述

我正在从节点上的结构样本中运行fabcar 示例。我的结构网络是在 docker 容器内运行的第一网络(BYFN),我想在单独的节点(Raspberry Pi)上使用 node.js 结构客户端应用程序调用链代码。

connection-org1.json文件中,我已将 localhost 域名(在对等 url 中)替换为我自己的域名 (mydomain.com),该域名 (mydomain.com) 正在运行结构网络。

我使用以下修改后的网关设置在 Raspberry Pi 上执行invoke.js :

await gateway.connect(ccpPath, { wallet, identity: 'user1', discovery: { enabled: true, asLocalhost: false } });

这给了我一条错误消息:

2019-07-04T07:15:30.124Z - error: [Remote.js]: Error: Failed to connect before the deadline URL:grpcs://peer0.org1.example.com:7051
2019-07-04T07:15:30.132Z - warn: [DiscoveryEndorsementHandler]: _build_endorse_group_member >> G0:0 - endorsement failed - Error: Failed to connect before the deadline URL:grpcs://peer0.org1.example.com:7051
2019-07-04T07:15:30.134Z - error: [Remote.js]: Error: Failed to connect before the deadline URL:grpcs://peer0.org2.example.com:9051
2019-07-04T07:15:30.135Z - warn: [DiscoveryEndorsementHandler]: _build_endorse_group_member >> G1:1 - endorsement failed - Error: Failed to connect before the deadline URL:grpcs://peer0.org2.example.com:9051
Failed to submit transaction: Error: Endorsement has failed

我看到背书者的域名是在 docker composer 文件中定义的,而不是我的结构网络运行的域 (mydomain.com)。

我应该如何配置结构网络或 node.js 结构客户端应用程序,以便我可以从我的 Raspberry Pi 节点调用链代码?

标签: hyperledger-fabrichyperledger

解决方案


我做了一个解决方法,/etc/hosts在我的 Raspberry Pi 上扩展文件。我创建了认可的对等域名peer0.org1.example.com,并peer0.org2.example.com指向我运行结构网络(docker)的主机的 IP 地址。

这解决了问题,现在我可以从 Raspberry Pi 主机调用链代码。


推荐阅读