Socket.io io.use失败 – TypeError:io.use不是一个函数
我正在处理一个需要套接字握手会议的项目我试图让这个代码工作,我从https://www.npmjs.com/package/express-socket.io-session
var app = require('express')(), server = require("http").createServer(app), io = require("socket.io")(server), session = require("express-session")({ secret: "my-secret", resave: true, saveUninitialized: true }), sharedsession = require("express-socket.io-session"); // Attach session app.use(session); // Share session with io sockets io.use(sharedsession(session)); io.on("connection", function(socket) { // I've add this one... console.log(socket.handshake.session); // Accept a login event with user's data socket.on("login", function(userdata) { socket.handshake.session.userdata = userdata; }); socket.on("logout", function(userdata) { if (socket.handshake.session.userdata) { delete socket.handshake.session.userdata; } }); }); server.listen(3000);
我运行它,首先我得到了这个
var io = require("socket.io")(server); ^ TypeError: require(...) is not a function at Object.<anonymous> (/Users/Jack/Root/Sites/Scopone/provaric/server.js:8:30) at Module._compile (module.js:435:26) at Object.Module._extensions..js (module.js:442:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:313:12) at Function.Module.runMain (module.js:467:10) at startup (node.js:136:18) at node.js:963:3
解决了添加
io = require(“socket.io”)。listen(server);
然后我得到了这个
io.use(function(socket, next) { ^ TypeError: io.use is not a function at Object.<anonymous> (/Users/Jack/Root/Sites/Scopone/provaric/server.js:15:5) at Module._compile (module.js:435:26) at Object.Module._extensions..js (module.js:442:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:313:12) at Function.Module.runMain (module.js:467:10) at startup (node.js:136:18) at node.js:963:3
任何想法来解决这个问题?
socket.io@0.9.17
我在同样的情况下也遇到同样的问题。 即使你的问题在这里有一段时间,我会张贴我的方法。
整个问题是我用:
var io = require('socket.io');
但应该是:
var io = require('socket.io')();
其他的一切都没有在最后的大括号工作,但显然io.use不。
我没有通过服务器:
app.io = io;
在/ bin / www
app.io.attach(server);
希望这对某人有用。
更新:我使用Socket 1.5.2。
我已经解决了升级nmp,node.js和socket.io。 但要做到这一点,我不得不发现我的所有依赖都搞砸了:那些错误的我无法升级包。