尝试运行时出现此错误启动带有node server.js的快速服务器,我似乎无法弄清楚原因是什么。我相信我已经使用Express 4.0更新了我的应用程序,但也许有人可以在这里指出我的错误:
/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
以下是相关代码:
在server.js中......只是一些依赖项
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();
。 。
以下是我的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());
。 。
这是我的快车路线
// 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);
。 。
api.js
只是一些依赖
var pg = require('../../node_modules/pg'),
session = require('../../node_modules/express-session'),
connString = "postgres://...:...@...:5432";
。 。
这是我的简单注销功能......
exports.logout = function(req, res){
req.session = null;
};
答案 0 :(得分:1)
app.post(baseUrl + 'logout', api.logout());
正确的方式:
app.post(baseUrl + 'logout', api.logout);