gpt4 book ai didi

node.js - 无法读取 Layer.session 中未定义的属性 'connect.sid' - ExpressJS session

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:35 26 4
gpt4 key购买 nike

我在 ExpressJS 4 中使用 session 时遇到问题。

我尝试在server.js(我在其中设置应用程序的配置)和routes.js(在其中定义我的路线)中添加 session 。这是我不断得到的:

TypeError: Cannot read property 'connect.sid' of undefined at Layer.session [as handle]
(/Users/larissaleite/Documents/Routing/node_modules/express-session/index.js:115:32) at trim_prefix
(/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:226:17) at c
(/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:198:9) at
Function.proto.process_params
(/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:251:12) at next
(/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:189:19) at
Layer.expressInit [as handle]
(/Users/larissaleite/Documents/Routing/node_modules/express/lib/middleware/init.js:23:5) at
trim_prefix (/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:226:17)
at c (/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:198:9) at
Function.proto.process_params
(/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:251:12) at next
(/Users/larissaleite/Documents/Routing/node_modules/express/lib/router/index.js:189:19)

我像这样定义了 session (server.js):

var express  = require('express');
var app = express(); // create app with express
var connect = require('connect');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');

var passport = require('passport');

var session = require('express-session');

connect()
.use(cookieParser('appsecret'))
.use(function(req, res, next){
res.end(JSON.stringify(req.cookies));
});

app.use(session({ secret: 'appsecret', saveUninitialized: true, cookie: { secure: true, maxAge: new Date(Date.now() + 3600000) }, key:'connect.sid' }));

我也尝试过删除 key 。

当尝试在routes.js中定义 session 时,它是这样的:

app.use(session({ secret: 'appsecret', saveUninitialized: true, cookie: { secure: true, maxAge: new Date(Date.now() + 3600000) }, key:'connect.sid' }));

app.use(passport.initialize());
app.use(passport.session());

最佳答案

删除所有连接。 Express 4 是一次重大改革,删除了连接作为依赖项。删除所有需要/调用连接的部分。还要更新所有依赖项。

根据 Express-Session 中间件模块的文档:name - cookie 名称(以前称为 key )。 (默认值:'connect.sid')

不要向其传递任何内容,它将使用 Express sid。我已经复制了您的代码并在没有连接的情况下对其进行了测试,但没有收到这些错误。此外,我还在 session 配置对象中添加了 resave 键,以消除已弃用的警告(如果您运行的是最新的 Express 4 版本)。

var express = require('express');
var app = express(); // create app with express
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');

var passport = require('passport');

var session = require('express-session');

app.use(session({
secret: 'appsecret',
resave: false,
saveUninitialized: true,
cookie: {
secure: true,
maxAge: new Date(Date.now() + 3600000)
}
}));

app.listen(1234);

关于node.js - 无法读取 Layer.session 中未定义的属性 'connect.sid' - ExpressJS session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26107414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com