2017-04-06 48 views
0

通常情况下,一切正常,但在没有互联网连接我的应用程序抛出一个错误:的Node.js的getaddrinfo ENOTFOUND在没有互联网连接

events.js:160 
     throw er; // Unhandled 'error' event 
    ^

    Error: getaddrinfo ENOTFOUND 

    /* my code - putting this to try...catch have no effect: */ 
    var http = require('http'); 
    // (...) 
    var req = http.request(options, response => { 
     /* ... */ 
    }); 
    req.write(data); 
    req.end(); 

所以当互联网连接关闭我能做些什么,并我想阻止我的应用停止?

+0

你需要证明你的服务器代码的其余部分,我也建议提供有关应用程序是如何运行的详细信息,是通过运行'节点“,还是由像pm2或'forever'这样的进程管理器运行?你在本地运行吗?正在'localhost'上运行?您不需要互联网连接或者甚至是活动的网络连接,以便'http'模块创建一个本地监听的服务器。 – peteb

+0

@peteb我按节点在本地运行它,但我请求的域在外部服务器上;我没有创建服务器,但只能通过上面的代码获取数据,并通过console.log –

+0

显示响应。如果某些内容不在本地,则无法请求它。这就是它的工作原理。 – peteb

回答

1

为防止您的app在外部服务器的Internet连接断开时停止,您可以捕获getaddrinfo ENOTFOUND错误并将错误消息返回给您的最终客户端。请检查此SO如何捕获getaddrinfo ENOTFOUND错误。

在你的情况下,代码如下:

var http = require('http'); 
// (...) 
var req = http.request(options, response => { 
    /* ... */ 
}); 
req.on('error', function (err) { 
    // Check error type and console.log corresponding message. 
}); 
req.write(data); 
req.end();