我正在研究 Express.js 并学习了如何使用 cookie-session 模块处理会话。我正在尝试使用快速会话,但我遇到了问题。
以前,我使用的是 cookie-session 而不是 express-session,并且 memoryStore 运行良好。但是,我不能将 connect-redis 与 cookie-session 一起使用,因此我安装了 express-session,但是有了它,我不能使用任何类型的存储,也不能使用 memoryStore,也不能使用 Redis。
Redis DB 位于 redistogo 上,其 URI 如下所示:(为安全起见,虽然这只是为了练习,但已屏蔽)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.x.x",
"cookie-parser": "1.x.x",
"express-session": "1.x.x",
"connect-redis": "2.x.x"
}
}
“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 进行设置?