NodeJS:我无法使connect-redis与express配合使用

4
这是我的代码:
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

请帮忙


connect-redis 用于会话存储。你在应用程序配置中定义了 app.use(express.session({..., store: new RedisStore(...)}); 吗? - Eugene Kostrikov
4个回答

17

看起来他们在文档中解决了这个问题:

由于 express 4.x.x 的更改,我们现在需要将 express-session 传递给 connect-redis 导出的函数,以扩展 express-session.Store:

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

app.use(session({ store: new RedisStore(options), secret: 'keyboard cat' }))

https://github.com/visionmedia/connect-redis 在使用中


2

1)从node_modules中删除express。

2)清除缓存(npm cache clean)。

3)通过package.json (*)或npm install安装最新版本。

4)通过package.json或npm install安装connect-redis。

5)使用:

, session = require('express-session'), , RedisStore = require("connect-redis")(session);


1

文档中有类似这样的内容:

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

而且这个实现没有出现错误。


0

同时还需要使用 resave 和 saveUninitialized,否则会出现警告信息。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接