2016-04-26 118 views
0

对不起,如果我是无知的或这里有一个实际的问题。我主持与node.js的一个HTTP服务器,APON运行服务器出现错误Socket.io“Listeners is undefined”

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); 
+0

您能分享完整的堆栈跟踪吗?这可能是你的某个文件中的某些内容发生了变化,导致错误涓流下来? – winhowes

+0

我认为我们需要看到更多相关的代码上下文。也许,这个模块是如何加载和调用的?我怀疑你将错误类型的对象传递给socket.io构造函数。它应该是一个服务器对象,但它可能不是。请告诉我们该代码。 – jfriend00

+0

在processes.js中使用套接字,我将把代码放在这里。 –

回答

0

在这一行代码的:

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

并且,因为你在使用而删除它们g Express作为您的服务器:

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

var server = http.createServer(handleRequest);