gpt4 book ai didi

node.js - TypeError : req. session.destroy 不是函数 - Express.js

转载 作者:行者123 更新时间:2023-12-01 19:34:33 25 4
gpt4 key购买 nike

我使用 React.js 和 Express.js 作为网络服务器制作了我的网络应用程序。 React 在 package.json 中通过这个(现在)连接到 Express:

  "proxy": "http://localhost:5000/"

在我的 Express 服务器中,我使用它来处理 session :
const cookieSession = require('cookie-session');

还有这个:
app.use(cookieSession({
name: 'parse-session',
secret: "SECRET_SIGNING_KEY",
maxAge: 15724800000
}));

所以当我使用登录到我的 API 时它工作正常,这是检查 currentUser 是否存在的代码:
    return new Promise((resolve,reject)=>{

if(req.session.token){

console.log(req.session.token);
request({

uri:'http://myserver.herokuapp.com/parse/users/me',
headers: {
'X-Parse-Application-Id': 'my-app-id',
'X-Parse-Session-Token': req.session.token
},
json:true

}).then((userData) => {

if(userData){

resolve(userData);

}

}).catch((error) => {

reject(error);
});
}

通过 React 中的这个调用,它可以毫无问题地工作:
   fetch('/user',{credentials:'include'})
.then((response)=>{
return response.json();
})
.then((body)=>{
if(body.user){
this.setState({logIn:true});
}

}).catch((error)=>{
console.log('My error:',error);

});

问题是当我尝试注销时:我在 React 上执行此操作:
 axios.post('/logout').then((res)=>{
console.log(res);

}).catch((err)=>{
console.log(err);
});

这是 Express 上的注销:
app.post('/logout',(req,res)=>{


if(req.session){

req.session.destroy((error)=>{
if(error){
console.log(error);
}
});
}
});

这给了我这个错误信息:
TypeError: req.session.destroy is not a function

为什么?我已经看到 destroy() 是一个函数。我也试过把: req.session = null但是,当您在 promise 后调用以检查 session 是否存在时,它当前还活着。

为什么?我怎么能用它来解决它?

谢谢

最佳答案

req.session.destroy是使用 express-session 时的调用npm 模块。但是,您使用的是 cookie-session在其当前版本中未定义 req.session.destroy导致你得到的错误。

在使用 cookie-session 时销毁 session ,您只需将其设置为空:req.session = null .如果您决定使用 express-session而是,然后 req.session.destroy会工作。

引用:

  • https://www.npmjs.com/package/cookie-session
  • https://www.npmjs.com/package/express-session
  • 关于node.js - TypeError : req. session.destroy 不是函数 - Express.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48752078/

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