node Error: Most middleware (like session) is no longer bundled with Express and must be installed

4 篇文章 0 订阅

 Error: Most middleware (like session) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.

        

今天在实现mongodb数据库的过程中,遇到一个如题这个问题,这个问题的意思是:大多数中间件(像session)不再随express一起安装。

     在express 4.0之前的版本,像session之类的中间件是伴随express自动安装的,网上有的教程使用的express版本正是4.0之前的版本,所以在使用4.0及其之后版本的时候一定要注意这点。

     我的代码中使用session中间件的代码:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. app.use(express.session({  
  2.     secret:setting.cookieSecret,  
  3.     key:setting.db,  
  4.     cookie:{maxAge:1000*60*60*24*30},  
  5.     store:new MongoStore({db:setting.db})  
  6. }));  


  这是在实现mongodb回话组建connect-mongo时需要的。

  查看node_modules\connect-mongo\Readme.md可以看到4.0之后的用法已经不一样了。内容:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. With express4:  
  2.       
  3.     var session    = require('express-session');  
  4.     var MongoStore = require('connect-mongo')(session);  
  5.   
  6.     app.use(session({  
  7.         secret: settings.cookie_secret,  
  8.         store: new MongoStore({  
  9.           db : settings.db,  
  10.         })  
  11.       }));  
  12.   
  13. With express<4:  
  14.   
  15.     var express = require('express');  
  16.     var MongoStore = require('connect-mongo')(express);  
  17.   
  18.     app.use(express.session({  
  19.         secret: settings.cookie_secret,  
  20.         store: new MongoStore({  
  21.           db: settings.db  
  22.         })  
  23.       }));  
  24.   
  25. With connect:  
  26.   
  27.     var connect = require('connect');  
  28.     var MongoStore = require('connect-mongo')(connect);  


【解决办法】:

  在package.json中加入express-session的中间件,命令提示符进入项目目录下,npm install 重新安装。或是在目录下使用命令安装:npm i express-session即可将express-session安装到项目中。在使用的模块中加入

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. var session    = require('express-session');  
  2.     var MongoStore = require('connect-mongo')(session);  


……

使用的时候不在使用express.session,而是直接使用session():

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. app.use(session({  
  2.     secret:setting.cookieSecret,  
  3.     key:setting.db,  
  4.     cookie:{maxAge:1000*60*60*24*30},  
  5.     store:new MongoStore({db:setting.db})  
  6. }));  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值