[英]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.