简体   繁体   English

Socket.io“监听器未定义”

[英]Socket.io “Listeners is undefined”

Sorry if i'm ignorant or there is an actual problem here. 抱歉,如果我不了解,或者这里有实际问题。 I am hosting a http server with node.js, and apon running the server I get the error 我正在使用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)

This error has not occurred before and just recently came up. 此错误以前没有发生过,只是最近才出现。 I've tried reinstalling socket.io, and personally editing the file. 我尝试重新安装socket.io,并亲自编辑该文件。 Though, to no avail. 虽然,无济于事。 It fails every time. 每次都会失败。 So i'll gladly take advice on how to fix this. 因此,我很乐意就如何解决此问题提出建议。 Thank you for your time... 感谢您的时间...

How its being used 如何使用

//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);

In this line of your code: 在这段代码中:

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

server is undefined. server未定义。


You can probably change this: 您可能可以更改此设置:

app.listen(8080);

to this: 对此:

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

And, get rid of these that are too early in your code: 并且,摆脱掉代码中太早的内容:

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

And, remove these too since you're using Express as your 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