Node.js 无法读取属性';connect.sid';在Layer.session-ExpressJS会话中未定义的
我在ExpressJS4中使用会话时遇到问题 我尝试在server.js(我在其中设置应用程序的配置)和routes.js(我在其中定义路由)中添加会话。这是我一直得到的:Node.js 无法读取属性';connect.sid';在Layer.session-ExpressJS会话中未定义的,node.js,session,express,passport.js,Node.js,Session,Express,Passport.js,我在ExpressJS4中使用会话时遇到问题 我尝试在server.js(我在其中设置应用程序的配置)和routes.js(我在其中定义路由)中添加会话。这是我一直得到的: TypeError: Cannot read property 'connect.sid' of undefined at Layer.session [as handle] (/Users/larissaleite/Documents/Routing/node_modules/express-session/index.j
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)
我这样定义了会话(server.js):
我还试着取下钥匙
尝试在routes.js中定义会话时,如下所示:
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());
拆下并连接所有部件。Express4是一次大检修,它将connect作为依赖项删除。拆下所有需要/呼叫连接的零件。同时更新所有依赖项 根据express会话中间件模块的文档:
name-cookie名称(以前称为key)。(默认值:“connect.sid”)
不要传递任何内容,它将使用快速sid。我已经复制了你的代码,并在没有连接的情况下对其进行了测试,我没有收到这些错误。此外,我还将
resave
键添加到session
config对象中,以禁用不推荐的警告(如果您运行的是最新的express 4版本)
拆下并连接所有部件。Express4是一次大检修,它将connect作为依赖项删除。拆下所有需要/呼叫连接的零件。同时更新所有依赖项 根据express会话中间件模块的文档:
name-cookie名称(以前称为key)。(默认值:“connect.sid”)
不要传递任何内容,它将使用快速sid。我已经复制了你的代码,并在没有连接的情况下对其进行了测试,我没有收到这些错误。此外,我还将
resave
键添加到session
config对象中,以禁用不推荐的警告(如果您运行的是最新的express 4版本)
首先,将节点版本更新为最新版本:
更新所有依赖程序包:
如有需要
首先,将节点版本更新为最新版本:
更新所有依赖程序包:
如有需要
您正在运行哪个版本的express?它似乎是Express4,但你为什么还要包括connect,这毫无意义。Express4!应该是怎样的?当然,发布了一个答案:你在运行哪个版本的express?它似乎是Express4,但你为什么还要包括connect,这毫无意义。Express4!应该是怎样的?当然,发布了一个答案:D@Seth这段代码的作用是什么?resave:false,saveUninitialized:true,cookie:{secure:true,maxAge:new Date(Date.now()+3600000)}@user7350714您可以在他们的README.md-.@Seth中找到问题的答案。这段代码的作用是什么?resave:false,saveUninitialized:true,cookie:{secure:true,maxAge:new Date(Date.now()+3600000)}@user7350714您可以在他们的README.md-中找到问题的答案。
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());
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);
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
npm i -g npm-check-updates
ncu -u
npm install
npm audit fix