微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hyperledger-fabric-node 错误:14 UNAVAILABLE:无法连接到所有地址

如何解决Hyperledger-fabric-node 错误:14 UNAVAILABLE:无法连接到所有地址

我正在尝试通过 fabric-sdk-node 为我的 fabirc 网络构建一个前端,但出现了一些错误。 这是我的错误信息。

root@oyu-virtual-machine:~/hyperledger-fabric/test/webapp# node get.js
Load privateKey and signedCert
Get History
Assigning transaction_id:  467c10baa2720435fc664ebecc8e2e8dc2dc833277c1494ffd0b9cf6dbeb99cf
returned from gethistory
Gethistory result count =  1
error from gethistory =  Error: 14 UNAVAILABLE: Failed to connect to all addresses
at Object.exports.createStatusError (/root/hyperledger-fabric/test/webapp/node_modules/fabric-client/node_modules/grpc/src/common.js:91:15)
at Object.onReceiveStatus (/root/hyperledger-fabric/test/webapp/node_modules/fabric-client/node_modules/grpc/src/client_interceptors.js:1209:28)
at InterceptingListener._callNext (/root/hyperledger-fabric/test/webapp/node_modules/fabric-client/node_modules/grpc/src/client_interceptors.js:568:42)
at InterceptingListener.onReceiveStatus (/root/hyperledger-fabric/test/webapp/node_modules/fabric-client/node_modules/grpc/src/client_interceptors.js:618:8)
at callback (/root/hyperledger-fabric/test/webapp/node_modules/fabric-client/node_modules/grpc/src/client_interceptors.js:847:24) {
  code: 14,Metadata: Metadata { _internal_repr: {},flags: 0 },details: 'Failed to connect to all addresses'
}
Response is  Error: 14 UNAVAILABLE: Failed to connect to all addresses

这是我的 js 代码,它尝试发送请求以调用代码消息。我从面料样本中复制了它,只做了一点点修改

'use strict';

var hfc = require('fabric-client'); 
var path = require('path'); 
var util = require('util'); 
var sdkUtils = require('fabric-client/lib/utils') 
const fs = require('fs'); 
var options = { 
    user_id: 'Admin@sell.trace.com',msp_id:'OrgSellMSP',channel_id: 'mychannel',chaincode_id: 'sellcc',peer_url: 'grpcs://192.168.1.2:7051',privateKeyFolder:'/root/hyperledger-fabric/test/basic-network/crypto-config/peerOrganizations/sell.trace.com/users/Admin@sell.trace.com/msp/keystore',signedCert:'/root/hyperledger-fabric/test/basic-network/crypto-config/peerOrganizations/sell.trace.com/users/Admin@sell.trace.com/msp/signcerts/Admin@sell.trace.com-cert.pem',peer_tls_cacerts:'/root/hyperledger-fabric/test/basic-network/crypto-config/peerOrganizations/sell.trace.com/peers/peer0.sell.trace.com/tls/ca.crt',server_hostname: "peer0.sell.trace.com" 
};

var channel = {}; 
var client = null; 
var targets = []; 
var tx_id = null; 
const getKeyFilesInDir = (dir) => { 
        const files = fs.readdirsync(dir) 
        const keyFiles = [] 
        files.forEach((file_name) => { 
                let filePath = path.join(dir,file_name) 
                if (file_name.endsWith('_sk')) { 
                        keyFiles.push(filePath) 
                } 
        }) 
        return keyFiles 
} 
Promise.resolve().then(() => { 
    console.log("Load privateKey and signedCert"); 
    client = new hfc(); 
    var    createuserOpt = { 
                username: options.user_id,mspid: options.msp_id,cryptoContent: { privateKey: getKeyFilesInDir(options.privateKeyFolder)[0],signedCert: options.signedCert } 
         } 
return sdkUtils.newkeyvalueStore({ 
                        path: "/tmp/fabric-client-stateStore/" 
                }).then((store) => { 
                        client.setStateStore(store) 
                         return client.createuser(createuserOpt) 
                 }) 
}).then((user) => { 
    channel = client.newChannel(options.channel_id); 
    
    let data = fs.readFileSync(options.peer_tls_cacerts); 
    let peer = client.newPeer(options.peer_url,{ 
            pem: Buffer.from(data).toString(),'ssl-target-name-override': options.server_hostname 
        } 
    ); 
    peer.setName("peer0"); 
    channel.addPeer(peer); 
    return; 
}).then(() => { 
    console.log("Get History"); 
    var transaction_id = client.newTransactionID(); 
    console.log("Assigning transaction_id: ",transaction_id._transaction_id); 
    const request = { 
        chaincodeId: options.chaincode_id,txId: transaction_id,fcn: 'githistory',args: 's-001'
    }; 
     return channel.queryByChaincode(request); 
}).then((query_responses) => { 
    console.log("returned from gethistory"); 
    if (!query_responses.length) { 
        console.log("No payloads were returned from gethistory"); 
    } else { 
        console.log("Gethistory result count = ",query_responses.length) 
    } 
    if (query_responses[0] instanceof Error) { 
        console.error("error from gethistory = ",query_responses[0]); 
    } 
    console.log("Response is ",query_responses[0].toString()); 
}).catch((err) => { 
    console.error("Caught Error",err); 
});

我是 nodejs 的新手,之前没学过 nodejs。提前致谢。


新编辑

这是我在 peer0.sell.trace.com 上的错误信息,它是组织的锚点。

2021-04-27 06:24:12.960 UTC [ConnProducer] NewConnection -> ERRO 035 Failed connecting to orderer.trace.com:7050,error: context deadline exceeded
2021-04-27 06:24:12.960 UTC [deliveryClient] connect -> ERRO 036 Failed obtaining connection: Could not connect to any of the endpoints: [orderer.trace.com:7050]
2021-04-27 06:24:12.960 UTC [deliveryClient] try -> WARN 037 Got error: Could not connect to any of the endpoints: [orderer.trace.com:7050],at 1 attempt. retrying in 1s

这是我在 orderer.trace.com 中的错误信息

2021-04-27 06:24:19.576 UTC [core.comm] ServerHandshake -> ERRO 008 TLS handshake Failed with error EOF {"server": "Orderer","remote address": "172.21.0.7:33714"}

解决方法

我发现了这个问题。这是因为您的 peer1 已关闭,请使用 docker ps -a 检查。如果它启动然后检查它的日志有时由于内存问题它会崩溃。

此外,您的交易将毫无问题地推送到区块链。请在区块链中验证您的交易。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。