节点http模块中的ECONNREFUSED

时间:2015-07-16 12:22:22

标签: node.js node-request

当远程站点脱机时,我在我的消费客户端(带有http模块的Node.js v0.12.0)中收到此错误:

 Uncaught exception: connect ECONNREFUSED
 Error: connect ECONNREFUSED
     at exports._errnoException (util.js:746:11)
     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:983:19)

我目前使用的代码如下所示:

var req = http.request(options, function (res) {
    res.on('socket', function (socket) {
        socket.setKeepAlive(true, 0);
        socket.setNoDelay(true);
    });

    res.on('end', function () {
        log.debug('Success');
    }).on('error', function () {
        log.error('Response parsing failed');
    });
}).on('error', function () {
    log.error('HTTP request failed');
});

req.write(packet);
req.end();

"错误" ECONNREFUSED发生时,事件永远不会被触发,我已尝试使用" clientError"事件,但这也没有被解雇。

如何捕获此错误?

1 个答案:

答案 0 :(得分:0)

摘自:https://stackoverflow.com/a/4328705/4478897

  

注意:这篇文章有点陈旧

下一个例子是http.createClient,但我认为它可能是相同的

  

不幸的是,目前没有办法直接捕获这些异常,因为所有的东西都是在后台异步发生的。

     

你所能做的就是自己捕捉uncaughtException:

process.on('uncaughtException', function (err) {
    console.log(err);
}); 

也许这有助于你!

更多信息:https://stackoverflow.com/a/19793797/4478897

<强>更新

您是否尝试将log.error()更改为console.error() ???