When I add a Map object to the session, subsequent requests find an empty object under the same name instead of the original Map. This results in an error.
var express = require('express');
var app = express();
var session = require('express-session')
var MemoryStore = require('memorystore')(session)
app.use(session({
store: new MemoryStore({ checkPeriod: 86400000 }),
resave: true,
saveUninitialized: true,
secret: 'keyboard cat'
}));
app.get( '/', ( req, res ) => {
if ( ! req.session.hasOwnProperty( 'mymap' ) )
req.session.mymap = new Map( [ [ 'message', 'hello' ] ] );
console.log( req.session.mymap );
res.end( req.session.mymap.get('message') )
} );
app.listen( 8100, () => console.log('Go ahead; I\'m listening.' ) );
First Request (console):
Go ahead; I'm listening.
Map { 'message' => 'hello' }
First Request (browser):
hello
Second Request (console):
TypeError: req.session.mymap.get is not a function
at app.get (.../app.js:15:30)
at Layer.handle [as handle_request] (.../node_modules/express/lib/router/layer.js:95:5)
at next (.../node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (.../node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (.../node_modules/express/lib/router/layer.js:95:5)
at .../node_modules/express/lib/router/index.js:281:22
at Function.process_params (.../node_modules/express/lib/router/index.js:335:12)
at next (.../node_modules/express/lib/router/index.js:275:10)
at Immediate. (.../node_modules/express-session/index.js:489:7)
at runCallback (timers.js:697:11)
{}
Second Request (browser):
TypeError: req.session.mymap.get is not a function
at app.get (.../app.js:15:30)
at Layer.handle [as handle_request] (.../node_modules/express/lib/router/layer.js:95:5)
at next (.../node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (.../node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (.../node_modules/express/lib/router/layer.js:95:5)
at .../node_modules/express/lib/router/index.js:281:22
at Function.process_params (.../node_modules/express/lib/router/index.js:335:12)
at next (.../node_modules/express/lib/router/index.js:275:10)
at Immediate. (.../node_modules/express-session/index.js:489:7)
at runCallback (timers.js:697:11)
I'm using:
"express": "~4.16.0",
"express-session": "^1.15.6",
"memorystore": "^1.6.0",
See also: expressjs/session: es2015 Map object looks problem #302
When I add a Map object to the session, subsequent requests find an empty object under the same name instead of the original Map. This results in an error.
First Request (console):
First Request (browser):
Second Request (console):
Second Request (browser):
I'm using:
See also: expressjs/session: es2015 Map object looks problem #302