Node.js express 4.0,包含奇数警告消息的express会话

Node.js express 4.0,包含奇数警告消息的express会话,node.js,express,Node.js,Express,我正在尝试使用Express4.x设置一个nodejs应用程序。在经历了中间件删除问题之后,我终于让它工作了 但是,在以下代码行中有几条警告消息: app.use(session({secret: '<mysecret>'}) 在文档中,resave和saveUninitialized的默认值为true 因此,将代码更改为 app.use(session({secret: '<mysecret>', saveUninitialized

我正在尝试使用Express4.x设置一个nodejs应用程序。在经历了中间件删除问题之后,我终于让它工作了

但是,在以下代码行中有几条警告消息:

app.use(session({secret: '<mysecret>'})
在文档中,resave和saveUninitialized的默认值为true

因此,将代码更改为

app.use(session({secret: '<mysecret>', 
                 saveUninitialized: true,
                 resave: true}));
app.use(会话({secret:''),
saveUninitialized:true,
resave:true});
摆脱了警告

因此,为了抓住问题的关键:


如果这些值是默认值,为什么我必须传入这些值,为什么我不必传入其他选项?

正如警告所说,默认值将更改,因此它们希望通过现在显式设置值,确保在默认值更改时(在不久的将来),您不会遇到意外行为.

我发现这个问题很有用:


我没有足够的代表将此添加为评论。我添加了这个作为Ben答案的默认值

secret: process.env.SESSION_SECRET || '<mysecret>',
secret:process.env.SESSION|u secret |“,

,因为这些默认值会发生变化,当它们发生变化时,您可以通过显式地将它们传递给中间件来避免可能导致的错误。我很高兴它们不会告诉您默认选项是什么。
resave
saveUnitialized
都是布尔值,在1.7.2:@cfs:应该是
saveUninitialized
。我抄了你贴的东西,浪费了45分钟试图找出警告不会消失的原因。后来我意识到有个拼写错误。lol:d对浪费的时间表示担忧Maverick:)不幸的是,评论太旧了,我无法编辑,否则我会修正我的打字错误:/哦,那么这两个参数的默认值将来会改变吗?那就更有意义了!谢谢。传说中有,很快就会改变:)从未来开始。还是会很快改变:)谢谢你以代码的形式回答这个问题。。。在这附近看得还不够好。另外,我建议大家看看这些文档。在我的情况下,最好将它们设置为
false
(,)。对我来说,可能会话只需要一些额外的设置。谢谢
app.use(session({
    secret: cookie_secret,
    resave: true,
    saveUninitialized: true
}));
secret: process.env.SESSION_SECRET || '<mysecret>',
app.use(session({
  cookieName: 'session',
  secret: 'eg[isfd-8yF9-7w2315df{}+Ijsli;;to8',
  duration: 30 * 60 * 1000,
  activeDuration: 5 * 60 * 1000,
  httpOnly: true,
  secure: true,
  ephemeral: true,
  resave: true,
  saveUninitialized: true
}));