Error: Most middleware (like session) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.html
今天在实现mongodb数据库的过程当中,遇到一个如题这个问题,这个问题的意思是:大多数中间件(像session)再也不随express一块儿安装。node
在express 4.0以前的版本,像session之类的中间件是伴随express自动安装的,网上有的教程使用的express版本正是4.0以前的版本,因此在使用4.0及其以后版本的时候必定要注意这点。mysql
个人代码中使用session中间件的代码:git
- app.use(express.session({
- secret:setting.cookieSecret,
- key:setting.db,
- cookie:{maxAge:1000*60*60*24*30},
- store:new MongoStore({db:setting.db})
- }));
这是在实现mongodb回话组建connect-mongo时须要的。github
查看node_modules\connect-mongo\Readme.md能够看到4.0以后的用法已经不同了。内容:sql
- With express4:
-
- var session = require('express-session');
- var MongoStore = require('connect-mongo')(session);
-
- app.use(session({
- secret: settings.cookie_secret,
- store: new MongoStore({
- db : settings.db,
- })
- }));
-
- With express<4:
-
- var express = require('express');
- var MongoStore = require('connect-mongo')(express);
-
- app.use(express.session({
- secret: settings.cookie_secret,
- store: new MongoStore({
- db: settings.db
- })
- }));
-
- With connect:
-
- var connect = require('connect');
- var MongoStore = require('connect-mongo')(connect);
【解决办法】:mongodb
在package.json中加入express-session的中间件,命令提示符进入项目目录下,npm install 从新安装。或是在目录下使用命令安装:npm i express-session便可将express-session安装到项目中。在使用的模块中加入数据库
- var session = require('express-session');
- var MongoStore = require('connect-mongo')(session);
……express
使用的时候不在使用express.session,而是直接使用session():npm
- app.use(session({
- secret:setting.cookieSecret,
- key:setting.db,
- cookie:{maxAge:1000*60*60*24*30},
- store:new MongoStore({db:setting.db})
- }));