https://github.com/nswbmw/N-blog/wiki/第1章–一个简单的博客
正在跟随上面的教程一步一步做,在会话支持那一节中安装 connect-mongo
后,添加:
var MongoStore = require('connect-mongo')(express);
var settings = require('./settings');
和
app.use(express.cookieParser());
app.use(express.session({
// ......
})
}));
之后运行报错:
Error: Most middleware (like session) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.
求问在 Express 4 中该如何处理这个中间件
express 4 跟之前很不同。 比如 express.session 和 express.cookieParser 都已经不存在了。 express 和 中间件已经剥离了,除了 express.static。
跟mongodb无关 去抓connect 然后把epxress.XXX 改成connect.XXX
我改成了这样: var MongoStore = require(‘connect-mongo’)(connect); var settings = require(’./settings’); var connect = require(‘connect’);
app.use(cookieParser()); app.use(connect.session({ //… }));
我把connect-mongo.js也换成了git上的兼容4.x的版本, 也用npm安装了connect,运行报错: var Store = connect.Store || connect.session.Store; ^ TypeError: Cannot read property ‘Store’ of undefined
恩,读了一下各个的说明,按照新的规则试着改了改,结果还是出错,有些头大,代码在二楼
var connect = require(‘connect’); var session = require(‘express-session’); var MongoStore = require(‘connect-mongo’)(connect);
app.use(session({ secret: settings.cookieSecret, store: new MongoStore({ db: settings.db }) }));
我这样子好像就OK了。
谢谢,可以了!令我奇怪的是我之前也有尝试过使用express-session,但是依旧出错。 看了你的回答之后我调整了一下代码顺序结果成功了,应该是我的代码顺序不对造成的。
朋友,您好,可以一同交流一下吗?您的qq是多少呢?
我也在写这个例子,感觉书中的代码都过时了,这个头大,希望可以交流一下,指点一下小弟
@jin5354 我也遇到这样的问题,你是咋样解决了的?求指教,我也在看这本书,能不能交流一下
书中是基于Express 3.x 版本进行开发的, 在 Express 升级到4.x 之后session中间件已经不再内置了, 需要自己安装, 并且使用方式也不一样了. Express 4.x 中使用方式改为了这样:
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
app.use(session({
secret: 'foo',
store: new MongoStore(options)
}));
而 Express 3.x 中是这样的:
var MongoStore = require('connect-mongo')(express);
app.use(express.session({
secret: 'foo',
store: new MongoStore(options)
}));
LS正解