2016-04-26 10 views
0

Sorry, wenn ich unwissend bin oder hier ein Problem auftritt. Ich bin präsentiert ein HTTP-Server mit node.js, und den Server apon läuft erhalte ich die FehlerSocket.io "Listeners ist 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) 

Dieser Fehler aufgetreten ist, nicht vor und gerade vor kurzem kam auf. Ich habe versucht, socket.io neu zu installieren und die Datei persönlich zu bearbeiten. Obwohl, ohne Erfolg. Es scheitert jedes Mal. Also werde ich mich gerne beraten, wie ich das beheben kann. Vielen Dank für Ihre Zeit ...

Wie sein Sein

verwendet
//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

Können Sie den vollen StackTrace teilen? Es könnte sein, dass sich etwas in einer deiner Dateien geändert hat, was einen Fehler verursacht hat. – winhowes

+0

Ich denke, wir müssen mehr vom relevanten Code-Kontext sehen. Vielleicht, wie dieses Modul geladen und aufgerufen wird? Ich vermute, dass Sie den falschen Objekttyp an den Konstruktor socket.io übergeben. Es sollte ein Serverobjekt sein, aber wahrscheinlich nicht. Bitte zeigen Sie uns diesen Code. – jfriend00

+0

Socket wird in processs.js verwendet, ich werde den Code hier einfügen. –

Antwort

0

In dieser Zeile des Codes:

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

server nicht definiert ist.

app.listen(8080); 

dazu:

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

Und, diese loszuwerden, die zu früh in Ihrem Code sind:


Sie können sich wahrscheinlich das ändern

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

Und entfernen Sie diese auch, da Sie usin sind g Express als Server:

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

var server = http.createServer(handleRequest);