Node.js:TypeError:object不是函数

R0b*_*n1k 18 node.js

我有一个奇怪的错误:

var http = require("http");
var request = require("request");

http.createServer(function(request, response) {
    response.writeHead(200, {"Content-Type": "text/plain"});

    request('http://www.google.com', function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body) // Print the google web page.
        }
    });
    response.end();
}).listen(8888);
Run Code Online (Sandbox Code Playgroud)

这个想法是让它作为网络服务器收听,然后做一个请求.但这就是我得到的错误:

    request('http://www.google.com', function (error, response, body) {
    ^
TypeError: object is not a function
    at Server.<anonymous> (/Users/oplgkim/Desktop/iformtest/j.js:8:2)
    at Server.EventEmitter.emit (events.js:98:17)
    at HTTPParser.parser.onIncoming (http.js:2056:12)
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:120:23)
    at Socket.socket.ondata (http.js:1946:22)
    at TCP.onread (net.js:525:27)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我安装了请求,所以不是这样:)

Tim*_*per 30

request由于您具有相同名称的局部变量,因此对全局变量的访问将丢失.重命名其中一个变量将解决此问题:

var http = require("http"); var request = require("request");

http.createServer(function(req, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
    request('http://www.google.com', function (error, response, body) {
      if (!error && response.statusCode == 200) {
        console.log(body) // Print the google web page.
      }
    })
  response.end();
}).listen(8888);
Run Code Online (Sandbox Code Playgroud)