CNode

【已解决】求问:有没有可以代替connect-mongo的第三方模块?

问答
BBittenbydog发布于12 年前最后回复12 年前5 回复4379 浏览0 收藏

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

B
Bittenbydog#1·12 年前

就木有人来帮忙给个思路么?

P
pockry#2·12 年前

首先安装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
      })
   }));

试试。

B
Bittenbydog#3·12 年前
引用 pockry首先安装express session: npm install express session save 再改代码 试试。

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

B
Bittenbydog#5·12 年前

问题解决,封搂。

参与回复
登录后即可参与回复。登录