在node.js中使用超文本传输协议客户端时,我试图捕获ECONNREFUSED错误。我的请求是这样的:
var http = require('http');
var options = { host: 'localhost', port: '3301', path: '/', method: 'GET' };
http.request(options).on('response', function (res) {
// do some stuff
});
我不知道如何捕捉这个错误:
Error: connect ECONNREFUSED
at errnoException (net.js:614:11)
at Object.afterConnect [as oncomplete] (net.js:605:18)
如果我执行request.on('error', function () {});
,它不会捕获它。如果我这样做:
var req = request.on(etc)
req.on('error', function blah () {});
然后我得到了TypeError: Object false has no method 'on'
。
我真的需要做一个顶级的未捕获的错误来处理这个问题吗?目前,无论我做什么,我的整个过程都会退出。
编辑:我找到了一些博客文章,介绍如何创建一个connection
对象,对其调用request
,然后绑定到connection
对象上的错误,但这不会使整个http.request()
快捷方式变得无用吗?
发布于 2011-12-05 14:41:32
你有什么理由不使用http://nodejs.org/docs/v0.6.5/api/http.html#http.request作为基础吗?试试这个:
var req = http.request(options, function(res) {
// Bind 'data', 'end' events here
});
req.on('error', function(error) {
// Error handling here
});
req.end();
发布于 2013-01-13 04:16:34
每次对http.request()
的调用都会返回其自身。所以像这样试一试...
http.request(options.function(){}).on('error',function(){}).end();
发布于 2021-03-29 22:48:11
对于那些不使用DNS的用户(您也可以使用request
而不是get
,只需将get
替换为request
,如下所示:http.request({ ... })
):
http.get({
host: '127.0.0.1',
port: 443,
path: '/books?author=spongebob',
auth: 'user:p@ssword#'
}, resp => {
let data;
resp.on('data', chunk => {
data += chunk;
});
resp.on('end', () => console.log(data));
}).on('error', err => console.log(err));
https://stackoverflow.com/questions/8381198
复制相似问题