【问题标题】:NodeJS 'http' object is supposed to have a method called get() but where is it?NodeJS 'http' 对象应该有一个名为 get() 的方法,但它在哪里?
【发布时间】:2012-12-12 01:06:58
【问题描述】:

我想在我的控制台中看到“得到响应”或“得到错误”。

我一直在尝试使用 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

【问题讨论】:

    标签: javascript node.js http http-request


    【解决方案1】:

    您在您创建的服务器上调用get(),而不是在 http 对象上:

    var http = require('http').createServer(handler);
    

    你的 http 应该是:

    var http = require('http');
    

    那么你可以使用http.get();

    【讨论】:

      【解决方案2】:

      http 模块实际上有一个顶级的get 方法,但是您的变量http 是对http.Server 实例的引用,而不是对模块本身的引用。服务器没有发出客户端请求的方法。将前几行更改为

      var http = require('http');
      
      var fs = require('fs');
      
      http.createServer(handler).listen(9090);
      

      【讨论】:

        【解决方案3】:

        您的问题是您要求 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);
        });
        

        这不需要创建服务器。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-18
          • 2011-01-11
          • 1970-01-01
          • 1970-01-01
          • 2010-09-28
          相关资源
          最近更新 更多