簡體   English   中英

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

[英]TypeError: req.session.destroy is not a function - Express.js

我已經使用React.js和Express.js作為Web服務器制作了我的Web應用程序。 React在package.json中與此連接(現在):

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

在我的Express服務器中,我使用它來處理會話:

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但是,當您在答應檢查會話是否存在后調用時,它當前仍然有效。

為什么? 我該如何解決?

謝謝

如果您正在使用express-session npm模塊,則req.session.destroy是要使用的調用。 但是,您使用的cookie-session在當前版本中未定義req.session.destroy從而導致出現錯誤。

要在使用cookie-session session時銷毀cookie-session ,只需將其設置為null: req.session = null 如果您決定改用express-session ,則req.session.destroy將起作用。

參考文獻

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM