NodeJS:我无法使用connect-redis工作

时间:2014-03-10 17:18:40

标签: node.js express redis node-redis

这是我的代码:

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

请帮忙

3 个答案:

答案 0 :(得分:15)

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

  

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

     

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

     

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

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

答案 1 :(得分:2)

1)从node_modules中删除express

2)清理缓存(npm缓存清理)

3)通过package.json(*)或npm install

安装最后一个版本

4)通过package.json或npm install

安装connect-redis

5)使用:

,session = require(&#39; express-session&#39;)  ,RedisStore = require(&#34; connect-redis&#34;)(session);

答案 2 :(得分:0)

它还需要使用resave和saveUninitialized,否则你会收到警告信息。

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