首页 > 解决方案 > 错误 - expressSessionMiddleware 不是函数

问题描述

我正在尝试将 express-socket.io-sessions 用于用户会话的套接字,但是当我尝试添加中间件时,我不断收到此错误。这是我的代码:

var express = require('express');
var socket = require('socket.io');
var sharedSession = require("express-socket.io-session");

function main(req, res, server, session) {

    res.sendFile(__dirname + "/views/find.html");

    var io = socket(server);

    io.use(sharedSession(session, {
        autoSave: true
    }));

}

当我对它们进行控制台登录时,似乎传递给主函数的所有参数,所以我不认为是这样。任何有关为什么会发生此错误的帮助将不胜感激。谢谢。

标签: node.jssessionsocket.ioexpress-session

解决方案


您还必须将中间件session放入 express 应用程序中,然后才能使用sharedSession中间件。

正确的方式

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

参考官方文档 - https://www.npmjs.com/package/express-socket.io-session


推荐阅读