2016-06-28 82 views
0

我有一些问题与中间件不再与Node.js的 budnled我做就像这里:节点JS忽略分拆中间件

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

,但我仍然得到了同样的错误:“大多数中间件唧唧歪歪......”

var express = require('express'); 
var mongoose = require('mongoose'); 
var path = require('path'); 
var bodyParser = require('body-parser'); 
var config = require('config'); 
var session = require('express-session'); 

var app = express(); 
var IS_DEV = (app.get('env') === 'development'); 
var MongoStore = require('connect-mongo')(express); 

app.use(session({ 
    secret: config.get('session:secret'), 
    key: config.get('session:key'), 
    cookie: config.get('session:cookie'), 
    store: new MongoStore({mongoose_connection: mongoose.connection}) 
})); 

包安装,我看到它在node_modules文件夹中。而且我没有看到像这样的错误:session is undefined我做错了什么?

顺便说一句相同事情与express-error-handler

  • 视窗8.1
  • 节点4.4.0
  • mongodb的3.2.4
  • NPM 20年2月14日
  • 表达4.13.4

回应:

Error: Most middleware (like session) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware. 
[1]  at Function.Object.defineProperty.get (C:\Work\todoapp\node_modules\express\lib\express.js:99:13) 
[1]  at connectMongo (C:\Work\todoapp\node_modules\connect- mongo\src\index.js:48:43) 
[1]  at Object.<anonymous> (C:\Work\todoapp\app.js:10:42) 
[1]  at Module._compile (module.js:409:26) 
[1]  at Object.Module._extensions..js (module.js:416:10) 
[1]  at Module.load (module.js:343:32) 
[1]  at Function.Module._load (module.js:300:12) 
[1]  at Module.require (module.js:353:17) 
[1]  at require (internal/module.js:12:17) 
[1]  at Object.<anonymous> (C:\Work\todoapp\bin\www:7:11) 
[1]  at Module._compile (module.js:409:26) 
[1]  at Object.Module._extensions..js (module.js:416:10) 
[1]  at Module.load (module.js:343:32) 
[1]  at Function.Module._load (module.js:300:12) 
[1]  at Function.Module.runMain (module.js:441:10) 
[1]  at startup (node.js:139:18) 
[1]  at node.js:968:3 
[1] Program node --debug ./bin/www exited with code 1 
[1] 
+0

什么是您收到的_exact_错误?它会告诉你你正在使用哪个中间件已被弃用。 – robertklep

+0

这里是回复 – Strangerliquid

回答

0

由于您使用的是Express 4,所以connect-mongo的设置不正确。

它应该是:

var session = require('express-session'); 
... 
var MongoStore = require('connect-mongo')(session); 
              ^^^^^^^ not `express` 

the documentation

+0

感谢它解决了这个问题,但我得到了另一个 错误:在MongoStore中找不到连接策略(C:\ Work \ todoapp \ node_modules \ connect-mongo \ src \ index.js:104:23' – Strangerliquid

+0

@在调用'new MongoStore()'([doc](https://github.com/kcbanner/connect-mongo#reuse-a-mongoose-connection)之前,您可能需要调用'mongoose.connect )) – robertklep

+0

C:\工作\ todoapp \ node_modules \猫鼬\ node_modules \ mongodb的\ lib中\ server.js:242 process.nextTick(函数(){抛出ERR;}) 错误:连接ECONNREFUSED 127.0.0.1: 28018 at Object.exports._errnoException(util.js:870:11) at出口。 _exceptionWithHostPort(util.js中:893:20) 在TCPConnectWrap.afterConnect [按的onComplete](net.js:1057:14)--debug ./bin/www与代码退出 程序节点1 我想这是因为猫鼬已经连接 - 它使用相同的端口值,因为我复制了以下设置: store:new MongoStore({mongooseConnection:mongoose.connection}) – Strangerliquid