Reputation:
Getting this error when trying to run start my express server with node server.js, and I can't seem to figure out what is the cause. I believe that I have made my app up to date with express 4.0, but maybe someone can point out my error here:
/home/trevor.panhorst/public_html/server/routes/api.js:236
req.session = null;
^
TypeError: Cannot set property 'session' of undefined
at Object.exports.logout (/home/trevor.panhorst/public_html/server/routes/api.js:236:17)
at Object.<anonymous> (/home/trevor.panhorst/public_html/server/server.js:96:34)
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
Here's the relevent code:
In server.js... just some dependencies
var express = require('express'),
routes = require('./routes'),
api = require('./routes/api'),
connString = "postgres://...:...@...:5432",
cookieParser = require('../node_modules/cookie-parser'),
errorHandler = require('../node_modules/errorhandler'),
bodyParser = require('../node_modules/body-parser'),
session = require('../node_modules/express-session');
var app = module.exports = express();
. . .
Here are my set/use declerations
app.set('port', 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(require('connect').bodyParser());
app.use(allowCrossDomain);
app.use(express.static(__dirname + '../'));
app.use(cookieParser());
app.use(session());
. . .
and here are my express routes
// clear cookie session on logout
app.post(baseUrl + 'logout', api.logout());
// redirect all others to the index (HTML5 history)
app.get('*', routes.index);
// Start server
app.listen(app.get('port'), function () {
console.log("Express server listening on port %d in %s mode",
app.get('port'), app.settings.env);
. . .
in api.js
just some dependencies
var pg = require('../../node_modules/pg'),
session = require('../../node_modules/express-session'),
connString = "postgres://...:...@...:5432";
. . .
and here is my simple logout function...
exports.logout = function(req, res){
req.session = null;
};
Upvotes: 0
Views: 3009
Reputation: 912
Wow, I got it. wrong way:
app.post(baseUrl + 'logout', api.logout());
right way:
app.post(baseUrl + 'logout', api.logout);
Upvotes: 1