Nodejs疑问,connect-mongo.js中出错 var Store = connect.session.Store;
Nodejs疑问,connect-mongo.js中出错
var Store = connect.session.Store;
终端出错显示是:Cannot read property ‘Store’ of undefined,我开始以为是Store没有定义,就去app.js这个系统入口文件里去看,发现: app.use(express.session({ secret: settings.cookieSecret, store: new MongoStore({ db: settings.db }) })); 发现可能是这个store写错了,于是我将其改为Store。但是重启服务器,终端还是报相同错,我于是又找了一些文件看,发现也没有什么问题(ps:之前终端一直报找不着…/settings,这个问题,我后来改好了,个人感觉书上得代码,可能有问题)
改成 var MongoStore = require(‘connect-mongo’)(express);
或者 安装MongoDB
1:修改package.json
"dependencies": {
“express”: “3.1.0”,
“ejs”: “*”,
“connect-mongodb”: “>= 0.1.7”,
“mongodb”:">=0.9.9"
}
2 :改成 var MongoStore = require(‘connect-mongodb’);
希望能帮到你
楼上正解,我试过了可行
谢谢,可以了
…/settings 改成./settings var MongoStore = require(‘connect-mongodb’);
有个db.js 是放到根目录的model下么 这个model还得新建吧
你是怎么解决找不到…/settings的问题的?
我改成var MongoStore = require(‘connect-mongodb’)后,访问页面出现以下错误: 500 TypeError: Cannot call method ‘findOne’ of null
请问connect-mongo和connect-mongodb的区别是?
有答案了么? 我也遇到了,刷新首页就这样. 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)
现在用 var MongoStore = require(‘connect-mongo’)(express); 可以解决
同问。 试了重新install connect-mongodb(不知道connect-mongo和connect-mongodb的区别)还是不行,“…/settings”还是找不到,settings和app是放在同个目录下,应该不用加"…/"吧?还有settings不是modules里面的工具,可以用require吗?
试了重新install connect-mongodb(不知道connect-mongo和connect-mongodb的区别)还是不行,“…/settings”还是找不到,settings和app是放在同个目录下,应该不用加"…/"吧?还有settings不是modules里面的工具,可以用require吗?
express 4和3的区别 我在学习《Node.js实战》这边讲的是express 3.x 现在express4和3有些区别 有空看我https://github.com/strongloop/express/tree/master/examples这些例子或许就解决不少疑惑了
根据你的描述,错误提示 Cannot read property 'Store' of undefined
表明你在尝试访问一个未定义对象的属性。在你的代码片段中,问题出在 connect.session.Store
上。
connect.session.Store
是 Connect 框架的一个抽象类,用于自定义会话存储。在较新的版本中,Express 已经不再直接使用 connect.session.Store
这个路径。你需要安装 connect-mongo
并正确配置它。
示例代码
首先确保你已经安装了所需的依赖:
npm install express-session connect-mongo --save
然后在你的应用中正确配置 express-session
和 connect-mongo
:
const express = require('express');
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const app = express();
app.use(session({
secret: 'your_secret_key',
resave: false,
saveUninitialized: false,
store: new MongoStore({
url: 'mongodb://localhost:27017/session-db'
})
}));
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
关键点解释
express-session
:这是 Express 的会话中间件。connect-mongo
:这是一个连接 MongoDB 的会话存储中间件。MongoStore
:使用require('connect-mongo')(session)
获取存储类,避免直接引用connect.session.Store
。
可能的问题
- 确保
connect-mongo
安装成功。 - 确保 MongoDB 服务正在运行,并且数据库名称与
url
中的一致。 - 确保你的
secret
是一个安全的字符串。
如果还有其他错误信息或需要进一步的帮助,请提供更多的日志信息。