我想在我的控制台中看到“得到回复”或“有错误”。
我一直在尝试使用http.get()执行HTTP请求,但在尝试时出现以下错误。
D:\wamp\www\Chat\server\test.js:19
http.get("http://google.com", function(res) {
^
TypeError: Object #<Server> has no method 'get'
at Object.<anonymous> (D:\wamp\www\Chat\server\test.js:19:6)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
这是test.js的全部内容:
var http = require('http').createServer(handler);
var fs = require('fs');
http.listen(9090);
function handler(req, res) {
fs.readFile(__dirname + '/index.html', function(err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
http.get("http://google.com", function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
在cmd中执行node --version
会返回v0.8.15
答案 0 :(得分:5)
您在所创建的服务器上调用get()
,而不是在http对象上调用{<1}}:
var http = require('http').createServer(handler);
你的http应该是:
var http = require('http');
然后您可以使用http.get();
答案 1 :(得分:2)
http
模块确实有一个顶级get
方法,但您的变量http
是对http.Server
实例的引用,而不是对模块的引用本身。服务器没有用于发出客户端请求的方法。将前几行更改为
var http = require('http');
var fs = require('fs');
http.createServer(handler).listen(9090);
答案 2 :(得分:1)
你的问题是你要求httpServer做到了,而不是http本身!如果您这样做,get方法将起作用:
var http = require('http');
http.get("http://google.com", function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
这不需要创建服务器。