【问题标题】:Getting "TypeError: "listener" argument must be a function" in Node.Js在 Node.Js 中获取“TypeError:“listener”参数必须是一个函数”
【发布时间】:2017-08-31 10:29:22
【问题描述】:

app.js

var url = require('url');
var http = require('http');
var fs = require('fs');

http.createServer(200, function(req, res){
  var q = url.parse(req.url, true);
  var filename = "." + q.pathname;
  fs.readFile(filename, function(err, data){
    if(err)
    {
        res.writeHead(404, {'Content-Type' : 'text/html'});
        return res.end("404 Not Found!!!");
    }
    res.writeHead(200, {'Content-Type' : 'text/html'});
    res.write(data);
    return res.end();
  });
}).listen(8080);

当我尝试使用命令“node app.js”运行它时,我收到以下错误:

events.js:238
    throw new TypeError('"listener" argument must be a function');
    ^

TypeError: "listener" argument must be a function
    at _addListener (events.js:238:11)
    at Server.addListener (events.js:298:10)
    at new Server (_http_server.js:263:10)
    at Object.createServer (http.js:35:10)
    at Object.<anonymous> (E:\AngularJS\New folder\app2.js:7:6)
    at Module._compile (module.js:573:30)
    at Object.Module._extensions..js (module.js:584:10)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3)

我试图找出解决方案,但无法解决。 提前致谢。

【问题讨论】:

    标签: node.js


    【解决方案1】:

    http.createServer 只需要一个 function,带有 2 个回调项 (response, request)。只需从您的 createServer 调用中删除 200 或将其替换为:

    http.createServer(function(req, res) { ... }

    您可以在此处阅读更多信息:https://nodejs.org/api/http.html#http_http_createserver_requestlistener

    【讨论】:

      【解决方案2】:

      只需删除200, 检查下面的代码

      var url = require('url');
      var http = require('http');
      var fs = require('fs');
      
      http.createServer(function(req, res){
        var q = url.parse(req.url, true);
        var filename = "." + q.pathname;
        fs.readFile(filename, function(err, data){
          if(err)
          {
              res.writeHead(404, {'Content-Type' : 'text/html'});
              return res.end("404 Not Found!!!");
          }
          res.writeHead(200, {'Content-Type' : 'text/html'});
          res.write(data);
          return res.end();
        });
      }).listen(8080);
      

      【讨论】:

        猜你喜欢
        • 2018-08-11
        • 2020-04-16
        • 2017-07-30
        • 2019-01-24
        • 2020-09-16
        • 2017-05-08
        • 1970-01-01
        • 2014-02-13
        • 1970-01-01
        相关资源
        最近更新 更多