繁体   English   中英

Socket.io“监听器未定义”

[英]Socket.io “Listeners is undefined”

抱歉,如果我不了解,或者这里有实际问题。 我正在使用node.js托管http服务器,并在运行该服务器时出现错误

    C:\Users\Xander\Desktop\Website>node ./processes.js
C:\Users\Xander\Desktop\Website\node_modules\socket.io\node_modules\engine.io\lib\server.js:
  var listeners = server.listeners('request').slice(0);
                        ^

TypeError: Cannot read property 'listeners' of undefined
    at Server.attach
(C:\Users\Xander\Desktop\Website\node_modules\socket.io\node_modules\engine.io\lib\server.js:423:25)
    at Function.attach (C:\Users\Xander\Desktop\Website\node_modules\socket.io\node_modules\engine.io\lib\engine.io.js:124:10)
    at Server.listen.Server.attach (C:\Users\Xander\Desktop\Website\node_modules\socket.io\lib\index.js:228:21)
    at Object.<anonymous> (C:\Users\Xander\Desktop\Website\processes.js:8:21)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)

此错误以前没有发生过,只是最近才出现。 我尝试重新安装socket.io,并亲自编辑该文件。 虽然,无济于事。 每次都会失败。 因此,我很乐意就如何解决此问题提出建议。 感谢您的时间...

如何使用

//Vars
var http       = require('http');
var express    = require("express");
var app        = express();
var path       = require("path");
var connect    = require("connect");
var io = require('socket.io').listen(server);
var socket     = io.listen(server);

//Defined port

const PORT = 8080;

//Connection handler

function handleRequest(request, response){  
response.end(request.url);
};

var server = http.createServer(handleRequest);

//Log all connections made


//Show .html file

app.get('/',function(req,res){  
res.sendFile(path.join(__dirname+'/index.html'));
});

//Port to listen to

app.listen(8080);

在这段代码中:

var io = require('socket.io').listen(server);

server未定义。


您可能可以更改此设置:

app.listen(8080);

对此:

var server = app.listen(8080);
var io = require('socket.io').listen(server);

并且,摆脱掉代码中太早的内容:

var io = require('socket.io').listen(server);
var socket     = io.listen(server);

而且,由于您将Express用作服务器,因此也请删除它们:

function handleRequest(request, response){  
    response.end(request.url);
};

var server = http.createServer(handleRequest);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM