node.js在设置系统代理时发出localhost客户端请求

时间:2011-01-11 12:37:31

标签: javascript node.js

这是交易:我使用node.js连接到本地CouchDB实例。

问题:“响应”事件未触发。所以我假设它没有得到连接。

var http = require('http'),
 sys = require('sys'),
 url = require('url');

var server = http.createServer(function (request, response) {
 var client = http.createClient(5984, '127.0.0.1'); // couchdb
 var request_db = client.request('GET', '/_all_dbs');
 console.log('Created a request for _all_dbs');
 request_db.addListener('response', function(response_db) {
  console.log('Some response from CouchDB');
 });
}).listen(8124);
console.log('Server running at http://127.0.0.1:8124/');

唯一的唯一输出是:

Server running at http://127.0.0.1:8124/
Created a request for _all_dbs

我也猜测这可能是代理问题。在Ubuntu 10.10中,我有一个系统范围的代理设置,但我告诉它忽略127.0.0.1。在127.0.0.1:5984/_all_dbs上进行卷曲会在“错误代码:502代理错误。”上显示错误。

2 个答案:

答案 0 :(得分:0)

首先,尝试访问127.0.0.1:8124/_utils,因为@PartlyCloudy建议。

其次,尝试使用诸如cradle之类的couchdb lib来让您的生活更轻松(并最大限度地减少错误)

npm install cradle

请记住停留在#node.js并提出问题!务必报告您的调查结果。

答案 1 :(得分:0)

如果您使用请求将http请求设置代理设置为空字符串..它将优先于系统设置(只有当目标IP是当前机器IP时才能执行此操作)

var options = {
        agent: ...,
        url: ...,
        method: ...,
        proxy: ''
    };
var req= request(options);
.
.
.