我对node.js的了解并不是很好,我可能会遗漏一些明显的东西。
我需要&#34;爬行&#34;实验的网址列表(http-https,主机和端口的组合)。其中一个网址没有响应(它在本地,所以我猜其中一个中间框正在阻止)它,它很好,但我打破了我的应用程序,因为我无法捕捉错误:< / p>
var http2 = require('http2');
var req = http2.raw.get('http://xxx.yyy.zzz.a:23/', function(response) {
var content = '';
response.on('data', function(chunk) {
content += chunk;
})
response.on('end', function() {
console.log(content);
console.log('end');
});
});
req.on('error', function(error) {
console.error(error);
});
它抛出以下错误(用process.on('uncaughtException', ...)
抓住它):
{ [Error: connect ETIMEDOUT xxx.yyy.zzz.a:23]
code: 'ETIMEDOUT',
errno: 'ETIMEDOUT',
syscall: 'connect',
address: 'xxx.yyy.zzz.a',
port: 23 }
Error: connect ETIMEDOUT xxx.yyy.zzz.a:23
at Object.exports._errnoException (util.js:814:11)
at exports._exceptionWithHostPort (util.js:837:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1044:14)
Try-catch不起作用,因为该函数是异步的。
request.on('error')
似乎没有发现此错误。此库中未实现setTimeout
。
我想我需要在TCP连接中添加一个事件,但我不知道如何。
我使用node.js 0.12.7和http2 3.2.0
有什么想法吗?真的很感激