NodeJS:我无法让connect-redis与express一起工作

zkure5ic  于 2023-03-07  发布在  Redis
关注(0)|答案(4)|浏览(136)

这是我的代码:

var express = require('express');
var RedisStore = require('connect-redis')(express);

这是我得到的错误:

RedisStore.prototype.__proto__ = Store.prototype;
                                        ^
TypeError: Cannot read property 'prototype' of undefined
    at module.exports (/home/cherif/Bureau/Twimbee/server/gamma/node_modules/connect-redis/lib/connect-redis.js:96:41)
    at Object.<anonymous> (/home/cherif/Bureau/Twimbee/server/gamma/index.js:2:42)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

请帮帮忙

b09cbbtk

b09cbbtk1#

看起来他们已经在他们的文档中解决了这个问题:
由于express 4.x.x的变化,我们现在需要将express-session传递给函数connect-redis exports来扩展express-session。
var会话=需要(“快速会话”),RedisStore =需要(“连接Redis”)(会话);
应用程序使用(会话({商店:新的RedisStore(选项),机密:'键盘猫' }))
https://github.com/visionmedia/connect-redis正在使用

8ehkhllq

8ehkhllq2#

1)从node_modules中删除express
2)清除高速缓存(npm高速缓存清除)
3)通过package.json(*)或npm安装安装最新版本
4)通过package.json或npm安装来安装connect-redis
5)用途:
,会话=需要("快速会话"),RedisStore =需要("连接-redis")(会话);

x759pob2

x759pob23#

此外,它需要使用resave和saveUninitialized,否则您将收到警告消息。

app.use( session({ 
    store: new RedisStore({ client : yourClient }), 
    secret: 'yourSecretKey',
    resave: true,
    saveUninitialized: true
}));
tkqqtvp1

tkqqtvp14#

在文档中有这样的内容:

const RedisStore = require("connect-redis").default;

app.use(session({
  store: new RedisStore({client: config.redis.client}),
  secret: 'your key',
  resave: false,
  saveUninitialized: false,
}));

https://www.npmjs.com/package/connect-redis
而且它在这个实现中不会出错。

相关问题