Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无法读取属性';connect.sid';在Layer.session-ExpressJS会话中未定义的_Node.js_Session_Express_Passport.js - Fatal编程技术网

Node.js 无法读取属性';connect.sid';在Layer.session-ExpressJS会话中未定义的

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

我在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.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