0

我有以下...

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");
    }
  });
};

这失败了以下......

TypeError: Object #<IncomingMessage> has no method 'send'

我该怎么做呢?

UPDATE尝试使用 write 而不是 send 但是...

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

也写出控制台也可以正常工作。

4

3 回答 3

1

问题在于变量的范围,我的响应输出与我在回调中返回的响应对象同名。改变这个(resp vs res)使它工作......

exports.get = function(req, res){
  request.get("<url>", function (err, resp, body) {
    if (!err) {
      res.send(body);
    }
  });
};
于 2013-07-22T13:07:37.197 回答
0

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

您需要的是http或者更好地获取express.js并使用它,因为它是直接且非常流行的 Web 框架,可以满足您的需求。

于 2013-07-21T23:07:07.277 回答
0

我不知道 OP 正在使用 Express。如果您尝试使用req.sendvanilla 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);
于 2013-07-22T00:04:23.673 回答