我刚刚升级到Express版本3,我看到我的中间件出错了。具体做法是:
Error: Most middleware (like session) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.
堆栈跟踪是:
at Function.Object.defineProperty.get (/home/phpsaravana/nodeshop/node_modules/express/lib/express.js:89:13)
at module.exports (/home/phpsaravana/nodeshop/node_modules/connect-mongo/lib/connect-mongo.js:30:39)
at Object.<anonymous> (/home/phpsaravana/nodeshop/admin.js:6:42)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
我该如何解决这个问题?
答案 0 :(得分:25)
在较新版本的express中,像session这样的中间件不与express捆绑在一起。此外,如果要使用它们,则必须单独安装它们。喜欢:
npm install express-session
然后要求它:
var session = require('express-session');
然后使用它:
app.set('trust proxy', 1) // trust first proxy
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}))
答案 1 :(得分:11)
我认为您的问题是关于从快递2升级到3.在Express 3中,以前与它们捆绑在一起的大多数软件包现在都是您需要的单个软件包,在您的应用程序中。
当然你需要把它包含在你的package.json中并像往常一样进行npm安装。
var express = require('express')
var session = require('express-session')
var app = express()
app.use(session({secret: 'keyboard cat'}))