asm
asm

Reputation: 947

Unable to use express sessions in heroku nodejs app

In my app.js I have:

var express       = require('express')
var path          = require('path');
var logger        = require('morgan');
var cookieParser  = require('cookie-parser');
var bodyParser    = require('body-parser');
var passport      = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var mongo         = require('mongodb');
var flash         = require('connect-flash');
....
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser('3mKay'));
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.session({ secret: 'thisISmyS3cR3t'}));

This crashes with the following message in Heroku.

 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 (/app/node_modules/express/lib/express.js:89:13)
 at Object.<anonymous> (/app/app.js:25:17)
 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 

I ran so it does exist in the package.json file as well:

 npm install express-sessions --save

"dependencies": {
....
"express": "~4.8.6",
"express-session": "^1.8.1",
"passport": "^0.2.1",
"passport-local": "^1.0.0",
....

It works fine when I comment out the

app.use(express.session({ secret: 'thisISmyS3cR3t'}));

And I've also tried variations of the above but it gives the same error message. Any ideas what may be causing this to happen? Something I might have overlooked...

Upvotes: 0

Views: 2058

Answers (1)

mscdex
mscdex

Reputation: 106736

Once you install it, you have to actually use it in your code:

var express       = require('express');
var session       = require('express-session');
var path          = require('path');
var logger        = require('morgan');
var cookieParser  = require('cookie-parser');
var bodyParser    = require('body-parser');
var passport      = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var mongo         = require('mongodb');
var flash         = require('connect-flash');
....
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser('3mKay'));
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(session({ secret: 'thisISmyS3cR3t'}));

Upvotes: 1

Related Questions