Node.js 开发指南上的例子, 我刚按照 http://cnodejs.org/topic/5141cf5e069911196d581966 上将
var MongoStore = require(‘connect-mongo’);
改成了
var MongoStore = require(‘connect-mongodb’);
运行 node app.js 显示在监听3000端口,正常
但是当启动浏览器键入 localhost:3000时, 就出现了这样的错误:
Express 500 TypeError: Cannot call method ‘findOne’ of null at MongoStore.MONGOSTORE.get (/Users/zhangnaixiao/Cold/node/NodeGuide/Chapter05/MicroBlog/node_modules/connect-mongodb/lib/connect-mongodb.js:115:15) at Object.session [as handle] (/Users/zhangnaixiao/Cold/node/NodeGuide/Chapter05/MicroBlog/node_modules/express/node_modules/connect/lib/middleware/session.js:311:11) at next
…
请问这是什么原因呢? 该怎么解决?
app.use(express.session({
secret: settings.cookieSecret,
store: new MongoStore({
db: settings.db
})
}));
是指这段么?
不是没有找到findOne模块。出错信息的字面意思是"无法从null中调用findOne方法"。 可能的原因是,在初始化connect-mongodb的时候缺少某个参数(数据库连接),而这个参数对象需要有findOne方法。