1
我已經通過許多問題解決了同一問題,但各種解決方案都沒有幫助。我正在使用Redis將會話存儲在羣集化的NodeJS + ExpressJS應用程序中,但會話始終未定義。這是我的快速安裝:NodeJS + ExpressJS + RedisStore會話未定義
var express = require('express'),
RedisStore = require('connect-redis')(express),
Config = require('./config/config'),
cluster = require("cluster"),
QueryManager = require('./service/query_manager'),
app = express();
// --- Index --- //
function renderSplash(req, res) {
res.render(...);
}
function renderIndex(req, res) {
res.render(...);
}
app.get('/', function(req, res) {
if(req.session.user === null) {
renderSplash(req, res);
} else {
renderIndex(req, res);
}
});
// --- Configuration ---//
//EJS
app.engine('.html', require('ejs').__express);
app.set('view engine', 'html');
app.set('views', __dirname + '/public');
app.configure(function() {
//Session
app.use(express.cookieParser());
app.use(express.session({
store: new RedisStore({
host: Config.redis.host,
port: Config.redis.port
}),
secret: 'Its a secret.',
cookie: { secure: true }
}));
app.use(validateRequest); //Ensures we're at www. to hit the LB
app.use(express.static(__dirname+'/public'));
app.use(express.compress);
app.use(app.router);
});
即使不使用Redis的店裏,我發現了以下錯誤: TypeError: Cannot read property 'user' of undefined
你是否嘗試過移動東西,比如在路由之前實例化會話,並且你是否在某處設置了session.user? – adeneo
我嘗試了所有的配置移動,沒有成功。像'req.session.user =「Hi」;'做一些事情''拋出相同的錯誤,因爲'req.session'是未定義的。 – kz3
@adeneo哎呀,我太快讀了你的評論。我沒有嘗試過在路由之前配置會話,這沒有辦法。如果你寫這個答案,我會接受。謝謝 ! – kz3