我有以下......
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'
另外写到控制台也可以正常工作。
答案 0 :(得分:1)
问题在于变量范围,我的响应输出与我在回调中返回的响应对象的名称相同。改变它(resp vs res)使它工作....
exports.get = function(req, res){
request.get("<url>", function (err, resp, body) {
if (!err) {
res.send(body);
}
});
};
答案 1 :(得分:0)
您要做的是提出请求&gt;响应服务器。但是你正在使用Request模块,它允许获取东西而不是响应。
您需要http
或更好地获取express.js并使用它,因为它是直接且非常受欢迎的网络框架,可以满足您的需求。
答案 2 :(得分:0)
我不知道OP正在使用Express。如果您尝试将req.send
与vanilla 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);