如何从HTTP Client Node.JS写入响应

如何从HTTP Client Node.JS写入响应,node.js,express,Node.js,Express,我有以下几点 var request = require('request'); exports.list = function(req, res){ res.send("Listing"); }; exports.get = function(req, res){ request.get("<URL>", function (err, res, body) { if (!err) { res.send(body,"utf8"); } });

我有以下几点

var request = require('request');

exports.list = function(req, res){
  res.send("Listing");
};
exports.get = function(req, res){
  request.get("<URL>", function (err, res, body) {
    if (!err) {
      res.send(body,"utf8");
    }
  });
};
var request=require('request');
exports.list=功能(请求、恢复){
res.send(“上市”);
};
exports.get=函数(req、res){
request.get(“),函数(err,res,body){
如果(!err){
res.send(正文,“utf8”);
}
});
};
此操作失败,原因如下

TypeError: Object #<IncomingMessage> has no method 'send'
TypeError:对象#没有方法“send”
我该怎么做

更新尝试使用写入而不是发送,但

/Users/me/Development/htp/routes/property.js:9
  res.setHeader('Content-Type', 'text/html');
      ^
TypeError: Object #<IncomingMessage> has no method 'setHeader'
/Users/me/Development/htp/routes/property.js:9
res.setHeader('Content-Type','text/html');
^
TypeError:对象#没有方法“setHeader”

相反,向控制台进行写操作也可以很好地工作

您要做的是使请求>响应服务器。但您使用的是请求模块,它允许获取内容而不是响应


您需要的是
http
,或者更好地获取和使用它,因为它是直接的、非常流行的web框架,正好满足您的需要。

我不知道OP正在使用Express。如果尝试将
req.send
与香草HTTP模块而不是Express一起使用,则会遇到类似的错误

var http = require('http');    
function requestHandler(req, res){
  //res.send(200, '<html></html>'); // not a valid method without express
  res.setHeader('Content-Type', 'text/html');
  res.writeHead(200);
  res.end('<html><body>foo bar</body></html>');
};
http.createServer(handler).listen(3000);
var http=require('http');
函数requestHandler(req,res){
//res.send(200,);//如果没有express,则不是有效的方法
res.setHeader('Content-Type','text/html');
书面记录(200);
res.end(“富吧”);
};
createServer(handler).listen(3000);

问题在于变量的作用域,我的响应输出与我在回调中得到的响应对象同名。改变这一点(resp vs res)使其工作

exports.get = function(req, res){
  request.get("<url>", function (err, resp, body) {
    if (!err) {
      res.send(body);
    }
  });
};
exports.get=函数(req,res){
request.get(“),函数(err,resp,body){
如果(!err){
决议(正文);
}
});
};

您应该详细说明您的答案。需要更多关于您的查询的信息才能回答。。。。。Usage Express framework可能是一个可行的解决方案。。。。。它使工作更加容易。您使用此函数的目的是什么
res.send
来自express API。您正在使用它吗?我正在使用express,我将尝试使用下面列出的非express命令,看看是否有效。请参阅我的答案它与框架无关,我非常熟悉express,并在多个项目中使用过它。问题是变量之间相互隐藏。是否使用express?传递给
http.createServer()
回调函数的响应对象没有
req.send()
方法,afaik
req.send
由Express添加。恭喜你解决了你的问题!如其他评论所述,是的,我使用的是express。谢谢你的帮助!