在Express.js中不能使用connect-redis

我正在学习Express.js,并学习了如何使用cookie会话模块处理会话。 我试图使用快速会话,但我有问题。

以前,我使用cookie会话而不是快速会话,而memoryStore完美运行。 但是,我不能使用cookie-session的connect-redis,因为这个原因,我安装了express-session,但是使用它,我不能使用任何types的存储,也不能使用memoryStore。

Redis DB在redistogo上,它的URI看起来像这样:(为了安全起见,尽pipe这只是为了实践)redis:// redistogo:e34d3 ******************* **** f4bb@albacore.redistogo.com:10072 /

但是,当我运行“节点应用程序”,它打印一个错误。

我的package.json:

{ "name": "application-name", "version": "0.0.1", "author": "Me <me@gmail.com>", "license": "MIT", "private": true, "scripts": { "start": "node app" }, "dependencies": { "express": "4.xx", "cookie-parser": "1.xx", "express-session": "1.xx", "connect-redis": "2.xx" } } 

“npm ls”显示如下:

 ├─┬ connect-redis@2.0.0 │ ├── debug@0.8.0 │ └── redis@0.10.1 ├─┬ cookie-parser@1.0.1 │ ├── cookie@0.1.0 │ └── cookie-signature@1.0.3 ├─┬ express@4.0.0 │ ├─┬ accepts@1.0.0 │ │ ├── mime@1.2.11 │ │ └── negotiator@0.3.0 │ ├── buffer-crc32@0.2.1 │ ├── cookie@0.1.0 │ ├── cookie-signature@1.0.3 │ ├── debug@0.8.0 │ ├── escape-html@1.0.1 │ ├── fresh@0.2.2 │ ├── merge-descriptors@0.0.2 │ ├── methods@0.1.0 │ ├── parseurl@1.0.1 │ ├── path-to-regexp@0.1.2 │ ├── qs@0.6.6 │ ├── range-parser@1.0.0 │ ├─┬ send@0.2.0 │ │ └── mime@1.2.11 │ ├─┬ serve-static@1.0.1 │ │ └─┬ send@0.1.4 │ │ ├── fresh@0.2.0 │ │ ├── mime@1.2.11 │ │ └── range-parser@0.0.4 │ ├─┬ type-is@1.0.0 │ │ └── mime@1.2.11 │ └── utils-merge@1.0.0 └─┬ express-session@1.0.3 ├── buffer-crc32@0.2.1 ├── cookie@0.1.2 ├── cookie-signature@1.0.3 ├── debug@0.7.4 ├── uid2@0.0.3 └── utils-merge@1.0.0 

我的app.js:

 //create express app var http = require('http'); var express = require('express'); var app = express(); //add express-session var session = require('express-session'); var RedisStore = require('connect-redis')(express); app.use(session({ store: new RedisStore({ host: "redis://redistogo:e34d3***********************f4bb@albacore.redistogo.com:10072/" }) })); //routing var router1 = require('./router/router1')(app); var router2 = require('./router/router2')(app); //Deploying server http.createServer(app).listen(3000, function () { console.log('Deployed!!'); }); 

“节点应用程序”运行时显示错误:

 luis@luis-laptop ~/www/express2 $ node app /home/luis/www/express2/node_modules/connect-redis/lib/connect-redis.js:96 RedisStore.prototype.__proto__ = Store.prototype; ^ TypeError: Cannot read property 'prototype' of undefined at module.exports (/home/luis/www/express2/node_modules/connect-redis/lib/connect-redis.js:96:41) at Object.<anonymous> (/home/luis/www/express2/app.js:18: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 

我应该使用什么会话模块? 我该如何使用Redis进行设置?

这个:

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

应该:

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

编辑:你还需要npm install cookie-parser并包括var cookieParser = require('cookie-parser'); 在顶部,然后app.use(cookieParser()); app.use(session({ ... }));

你需要redis客户端

 var redis = require('redis').createClient();