首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用http.request在node.js中捕获ECONNREFUSED?

用http.request在node.js中捕获ECONNREFUSED?
EN

Stack Overflow用户
提问于 2011-12-05 12:59:49
回答 3查看 28.3K关注 0票数 25

在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()快捷方式变得无用吗?

EN

回答 3

Stack Overflow用户

发布于 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();
票数 25
EN

Stack Overflow用户

发布于 2013-01-13 04:16:34

每次对http.request()的调用都会返回其自身。所以像这样试一试...

http.request(options.function(){}).on('error',function(){}).end();
票数 7
EN

Stack Overflow用户

发布于 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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8381198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档