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

 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

[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時須要的。github

  查看node_modules\connect-mongo\Readme.md能夠看到4.0以後的用法已經不同了。內容:sql

[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);  


【解決辦法】:mongodb

  在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

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

[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. }));  
相關文章
相關標籤/搜索