【问题标题】:req.session undefined in Express.js在 Express.js 中未定义 req.session
【发布时间】:2013-10-26 23:37:39
【问题描述】:

我看过几篇与此相关的帖子,但没有一个能解决我的问题。

我在 server.js 中有这段代码

var express = require('express');
var app = express();
app.configure(function(){
    app.set(express.cookieParser());
        app.set(express.session({secret: "This is a secret"}));
});
app.get('/name/:name', function(req, res){
    req.session.name = req.params.name;
    res.send("<a href='/name'>GO</a>");
});
app.get('/name', function(req, res){
    res.send(req.session.name);
});
app.listen(3000);

当我转到 http://localhost:3000/user/someone 时,这就是我得到的输出 TypeError: Cannot set property 'name' of undefined at /Users/Me/Node/server.js:10:19 at callbacks

【问题讨论】:

  • 不是app.use(express.cookieParser())等吗?
  • (另外,我认为app.configure 是不需要的,只保留为旧版,你应该打电话给app.use(stuff))。
  • app.configure() 方法不是遗留的,也不是在这里错误地使用。这里的问题是,提出问题的人使用的是设置设置的方法,而不是应用中间件的方法。
  • docs 似乎表明它是遗产......

标签: javascript node.js express


【解决方案1】:

决定从 cmets 复制。换个试试

app.configure(function(){
    app.set(express.cookieParser());
        app.set(express.session({secret: "This is a secret"}));
});

与

app.use(express.cookieParser());
app.use(express.session({secret: "This is a secret"}));

看看会发生什么。

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2013-12-11
    • 2016-09-28
    • 2014-08-20
    • 2012-09-24
    • 2014-04-24
    • 2016-02-13
    • 1970-01-01
    • 2016-06-16
    相关资源
    最近更新 更多