не может отправлять заголовки после их установки - PullRequest
0 голосов
/ 10 октября 2018

У меня есть этот код в моей странице входа в систему

//get login
router.get('/login', function(req, res, next) {
    const flashMessages = 
res.locals.getMessages( );
    if( flashMessages.error ){
        res.render( 'login', {
            showErrors: true,
            errors: flashMessages.error
        });
    }else{
        res.render( 'login' )
    }
    //console.log( 'flash', flashMessages);
  res.render('login', { title: 'LOG IN'});
});

И иногда, когда я пытаюсь получить страницу входа в систему, я в конечном итоге вижу пустую страницу или время от времени, когда я пытаюсьвойти, я и застрял на странице входа в систему вместо приборной панели.Иногда я не вижу значения в заголовке.И когда я проверяю свои журналы (nodemon), я вижу эту ошибку

Error: /var/www/html/akahline/views/error.hbs: Can't set headers after they are sent.               at validateHeader (_http_outgoing.js:491:11)    at ServerResponse.setHeader (_http_outgoing.js:498:3)

1 Ответ

0 голосов
/ 10 октября 2018

Вы отправляете свой рендеринг дважды.Наилучшим методом является возврат после flashMessages.error, например, так

//get login
router.get('/login', function(req, res, next) {
    const flashMessages = res.locals.getMessages( );
    if( flashMessages.error ){
        return res.render( 'login', {
            showErrors: true,
            errors: flashMessages.error
        })
    }

  //console.log( 'flash', flashMessages);
  res.render('login', { title: 'LOG IN'});
});

. Он будет возвращаться в случае ошибки при входе в систему с помощью showErrors и, если нет, при входе в систему с вашим title

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...