Как отлаживать заголовки отправленных ошибок в Node.js - PullRequest
3 голосов
/ 10 сентября 2011

Я получаю много Can't set headers after they are sent ошибок, и они, кажется, никогда не дают мне номера строк в моем app.js, это нормально? Как люди отлаживают эти ошибки?

Мой код, который выдает ошибку заголовков, выглядит следующим образом, он делает что-то странное, чтобы скрыть номера строк?

app.get('/', function(req, res, next) {
    if (req.param('q')) {
        searchProvider.search(
            req.param('q'),
            function( error, results) {
                res.render('search', {
                    locals: {
                        results: results,
                        q: req.param('q')
                    },
                });
            }
        );
    } else {
        res.render('index');
    }
});

1 Ответ

8 голосов
/ 10 сентября 2011

Can't set headers after they are sent

Это распространенная ошибка, которая означает, что вы в основном звоните res.render, res.end или res.send несколько раз. Это означает, что вы пытаетесь записать несколько HTTP-ответов на один HTTP-запрос (это неверно).

Распространенная причина этой ошибки - двойной вызов next в промежуточном программном обеспечении.

Может быть, у вас есть промежуточное ПО, например

app.all("*", function(req, res, next) {
  // not logged in
  if (!req.user) {
    res.render("loginError");
  } 
  // bad accidental next call!! Will call next after rendering login error
  next();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...