簡體   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