在学习使用Express框架,参考了CNode很早以前的这个项目。 Express的版本问题着实让人蛋疼,但大多数我看看文档能够解决。 可是,问题来了----connect-mongo模块。 模块作者给出的使用方法如下: Express4:
var MongoStore = require('connect-mongo')(session);
app.use(session({
secret: settings.cookie_secret,
store: new MongoStore({
db : settings.db,
})
}));
按照这种方法使用,报错如下:
var Store = connect.Store || connect.session.Store;
^
TypeError: Cannot read property 'Store' of undefined
之后,我找到了如下解决办法: 方法一:按照Express3 的方法使用,即:
var express = require('express');
var MongoStore = require('connect-mongo')(express);
app.use(express.session({
secret: settings.cookie_secret,
store: new MongoStore({
db: settings.db
})
}));
此方法报错为
Error: Most middleware (like session) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.
方法二:GitHub上有人提出 同样的问题,作者回复说clone该模块项目的master branch能解决问题。于是,我在package.json 中做了如下更改:
......
"connect-mongo": "git+https://github.com/kcbanner/connect-mongo.git#master",
"express-session": "*"
......
重试,问题仍然没有解决。
所以,请问各位前辈,有没有哪个模块可以替代connect-mongo模块呢?
5 回复
首先安装express-session:
npm install express-session --save
再改代码
var express = require('express');
var session = require('express-session');
var MongoStore = require('connect-mongo')({ session: session });
app.use(session({
secret: settings.cookie_secret,
store: new MongoStore({
db: settings.db
})
}));
试试。