簡體   English   中英

在Express.js中使用Session MemoryStore不會定義req.session

[英]Using Session MemoryStore in Express.js does not define req.session

我已經使用Express.js設置了一個Node.js測試服務器,如下所示:

var express     = require('express');
var MemoryStore = express.session.MemoryStore;
var app         = express.createServer();

app.configure(function() {
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(app.router);
    app.use(express.session({
        store: new MemoryStore(),
        secret: 'secret',
        key: 'bla'
    }));
});

app.get('/', function(req, res){
    console.log(req.session);
    res.end("html");
});

app.listen(3000);

為什么console.log(req.session)打印出undefined? 我沒有正確使用它嗎? 為了將變量保存到用戶的會話,我需要做什么?

客戶端收到一個存儲為其cookie的SID,但我無法為req.session分配任何屬性,因為它沒有定義。 感謝您提供解決此問題的任何提示! :-)

這是我正在使用的版本:

├─┬ express@2.5.9
│ ├─┬ connect@1.8.7
│ │ └── formidable@1.0.9
│ ├── mime@1.2.4
│ ├── mkdirp@0.3.0
│ └── qs@0.4.2

這是你的問題: app.use(app.router)將你的路線安裝在調用鏈中的那個位置。 會話中間件之前有它,所以還沒有req.session 當你把它留下時,只要你做第一個app.get (或app.post等),你的路線就會被定位。 如果您仍希望控制路徑的位置,可以將app.use(app.router)移到會話中間件下方。

請參閱Express“ 配置中間件文檔”。

我不知道app.router是什么,但它似乎是問題的原因。 刪除該行使它對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM