这是我的代码:
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
请帮忙
看起来他们已经在他们的文档中解决了这个问题:
由于 express 4.x.x 的变化,我们现在需要将 express-session 传递给 函数 connect-redis 导出以扩展 快速会议。商店:
var session = require('快速会话') , RedisStore = require('connect-redis')(session);
app.use(session({ store: new RedisStore(options), secret: 'keyboard 猫'}))
1) 从 node_modules 中删除 express
2) 清理缓存 (npm cache clean)
3) 通过 package.json (*) 或 npm install 安装最新版本
4) 通过 package.json 或 npm install 安装 connect-redis
5) 使用:
, session = require('快速会话') , RedisStore = require("connect-redis")(session);
还需要使用resave和saveUninitialized,否则会得到警告信息。
app.use( session({
store: new RedisStore({ client : yourClient }),
secret: 'yourSecretKey',
resave: true,
saveUninitialized: true
}));
在文档中有这样的东西:
`const RedisStore = require("connect-redis").default;
app.use(会话({ 商店:新的RedisStore({客户端:config.redis.client}), 秘密:'你的钥匙', 重新保存:假, 保存未初始化:假, }));
` https://www.npmjs.com/package/connect-redis
并且此实现不会出错。