1

在我正在开发的 Sails.js 应用程序中,我随机收到一个 ECONNREFUSED 错误。我试图检查抛出错误的代码,但没有运气。我已经将日志打开为详细(NODE_DEBUG 环境变量设置为“net”),我得到了这个:

NET 6070: onread 11
NET 6070: got data
NET 6070: _read
NET 6070: _read
NET 6070: _read wait for connection
NET 6070: pipe false undefined
NET 6070: connect: find host 127.0.0.1
NET 6070: connect: dns options [object Object]
NET 6070: onread 8680
NET 6070: got data
NET 6070: _read
NET 6070: afterConnect
NET 6070: destroy
NET 6070: close
NET 6070: close handle
verbose: Lowering sails...
verbose: Sent kill signal to child process (6080)...
verbose: Shutting down HTTP server...
NET 6070: SERVER _emitCloseIfDrained
NET 6070: SERVER handle? false   connections? 11
events.js:85
      throw er; // Unhandled 'error' event
        ^
Error: connect ECONNREFUSED
    at exports._errnoException (util.js:746:11)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)

我真的不知道这里有什么问题......

更新

当我使用节点检查器进行调试时,错误消失了。奇怪的!

4

2 回答 2

2

基本上,根据您显示的日志,events.js:85该文件在该行引发错误(我知道,很明显我只是在描述所有内容)。现在,如果没有该代码,就无法调试抛出错误的原因。但是,我相信在该行有一个方法/函数调用抛出了所述错误,并且它没有包装在一个try/catch块中,我的建议是包装它并记录错误消息以检查发生了什么。

我一直在做一些研究,偶然发现了许多错误,所有这些错误都指向events.js:85. 这似乎与您用于运行应用程序的端口有关。大多数解决方案都指出您应该选择随机端口或更改您在应用程序中使用的端口。

来源在这里

于 2015-09-10T17:07:52.630 回答
0

我知道出了什么问题。这是一个没有错误回调的 https 请求。

例子:

var request = require('https').request(requestOptions, function (response) {
    //logic here
});

request.on('error', function (err) {
    //error handling here
});
request.end();

我错过了“错误”回调。ECONNREFUSED 是由在某些时候未成功完成的请求引发的,并引发了该错误。

于 2015-09-11T13:38:59.517 回答