【已解决】求问:有没有可以代替connect-mongo的第三方模块?
发布于 10 年前 作者 Bittenbydog 3904 次浏览 最后一次编辑是 8 年前 来自 问答

在学习使用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
      })
   }));

试试。

@pockry 试过了,问题仍然存在。请问,这个connect模块需要安装么?

@pockry 问题解决,谢谢~~~

问题解决,封搂。

回到顶部