我已成功将express-session用于req.session的CRUD属性。当我将路由移动到单独的路由器文件中时,req.session是未定义的。例如...
const express = require('express');
const myRouter = require('./routers/mainroutes');
const session = require("express-session");
require('./db/mongoose');
const mongoose = require('mongoose');
const MongoStore = require('connect-mongo')(session);
const app = express();
const port = process.env.PORT || 3000;
app.use(myRouter);
app.use(session({
secret: 'thisisitNJDG',
resave: false,
cookie: { path: '/', httpOnly: true, secure: false, maxAge: 3600000 },
saveUninitialized: false,
store: new MongoStore({ mongooseConnection: mongoose.connection })
}));
app.get('/test1', (req, res) => {
req.session.testproperty = 'foo';
console.log(req.session);
res.send(req.session);
});
app.listen(port, () => {
console.log('Server is up on port ', port);
});
localhost:3000 / test1正常工作。我可以设置req.session.testproperty等。但是,localhost:3000 / test2尝试在未定义的(req.session)上设置属性(testproperty)失败。
//mainroutes.js
const express = require('express');
const router = new express.Router();
router.get("/test2", async (req, res) => {
req.session.testproperty = 'bar';
console.log(req.session);
res.send(req.session);
});
module.exports = router;
我尝试研究了几个小时,然后才发现问题,但找不到答案。预先感谢