Javascript Can';在Express 4中,您无法获得随请求一起发送的Cookie

Javascript Can';在Express 4中,您无法获得随请求一起发送的Cookie,javascript,session,cookies,express,express-4,Javascript,Session,Cookies,Express,Express 4,这是我的初始配置: var session = require('express-session'); var cookieParser = require('cookie-parser'); app.use(session({ saveUninitialized: true, resave: false, genid: function(req) { return Services.misc.generateUUID() }, secret:

这是我的初始配置:

var session         = require('express-session');
var cookieParser    = require('cookie-parser');
app.use(session({
  saveUninitialized: true,
  resave: false,
  genid: function(req) {
    return Services.misc.generateUUID()
  },
  secret: secret.toString()
}));
app.use(cookieParser(secret));
然后在我的控制器中(它通过一个死的简单路由器路由到一个控制器,然后控制器根据类似Rails的命名约定呈现适当的操作),我将执行以下操作:

var TestController = {
  noaction: function(req, res) {
    var locals = {
      billy: 'the goat'
    }

    console.log('req session'.red, req.session);
    res.cookie('test_cookie', 'Wu Tang Clan');

    this.services.render.view(req, res, this, 200, locals);
  }

module.exports = TestController;
请注意,
this.services.render.view
只是一个服务,因此我不必编写
res.render('./app/controllers'+controller+/'+action)

注意控制器()中的res.cookie行。这就是官方文件所说的,事实上,它是在浏览器中设置的:

然而,res.cookie上面的一行是一个日志,我可以想象我们在其中有
test\u cookie
,但是:

每次我都会得到一个标准的空白cookie,即使它被设置在浏览器端并被认为是发送的


我的问题是:如何在Express 4中正确设置和接收cookie?

答案如下:每次nodemon重新启动服务器以传播代码更改时,会话都会被清除

您的代码似乎还可以,正如dsp_099所说,它可能是nodemon。 express会话将数据保存在内存中,因此当您重新启动服务器(nodemon自动)时,所有内存数据都会重置

如果您想在重新启动节点的情况下保持会话数据,我建议您使用redis会话(redis数据库)