2017-05-22 4 views
0

"보낸 후 헤더를 설정할 수 없습니다." 질문 및이 오류가 res.render() get 두 번 호출 될 때 발생하지만 나를 도울 수있는 확실한 솔루션을 찾지 못했습니다 발견했습니다 ...오류 : 보낸 후 헤더를 설정할 수 없습니다.

제 경우에는 매번 세션이 유효한지 확인해야합니다. GET 요청은 인덱스 페이지에 있고 세션에 사용자가있는 경우 관련 매개 변수가있는 인덱스 페이지가 표시됩니다. ...

어떤 생각이든? 이 같은 조치가 if(!user)else 조건에서 수행 되었기 때문에

var express = require('express'); 
var path = require('path'); 
var Schemes = require('../library/dbModels.js'); 
var router = express.Router(); 


/* GET home page and preform validation on user */ 
router.get('/index',function(req, res){ 
    if(req.session && req.session.user) 
    { 
    Schemes.User.findOne({eMail:req.session.user.eMail},function(err,user) { 
     if(!user) 
     { 
     req.session.reset(); 
     res.render('login',{error:"Please log in ..."}) 
     } 
     else 
     { 
     res.locals.user=user; 
     res.render('index',{user:user}); 
     } 
    }); 
    } 
    else{ 
    res.render('login',{error:"Please log in ..."}) 
    } 
    res.render('index', { title: 'Index' }); 
}); 


module.exports = router; 
+0

'res.end()'를 찾으십니까? –

+0

문제는'res.render ('index', {title : 'Index'});'에 있습니다. 따라서 만약에 또는 다른 경우에, 그것은 실행될 것이고, 그래서 당신은이 오류를 얻고 있습니다 .. – Subburaj

답변

1

나는 마지막 res.render('index', { title: 'Index' });을 제거했습니다.

router.get('/index',function(req, res){ 
    if(req.session && req.session.user) { 
     Schemes.User.findOne({eMail:req.session.user.eMail}, function(err,user) { 
      if(!user) { 
       req.session.reset(); 
       res.render('login',{error:"Please log in ..."}) 
      } else { 
       res.locals.user=user; 
       res.render('index',{user:user, title: 'Index' }); 
      } 
     }); 
    } else { 
     res.render('login',{error:"Please log in ..."}) 
    } 
}); 
+0

그게 당신에게 감사했습니다 !!! (처음에는 ....) ------> Iv'e가 내 질문에 대한 답변을 작은 수정으로 추가했습니다 ... 정말 고마워요 !!!!!! –

+0

다행입니다. –

관련 문제