Конкретная ошибка, которую вы спросили о «Невозможно установить заголовки после их отправки клиенту», вызвана попыткой отправить второй ответ на тот же запрос. Таким образом, обычно существует проблема с потоком в вашем коде, который заставляет его выполнять несколько путей кода, которые могут отправить ответ.
В этих двух операторах необходимо добавить оператор return
, чтобы код выполнял не продолжать выполнение вашей функции после того, как вы отправили ответ:
if (req.query.username === undefined) { res.status(400).send('`username` query paramter missing.'); }
if (req.query.hash === undefined) { res.status(400).send('`hash` query paramter missing.'); }
Даже если вы вызвали res.send()
, нормальное управление потоком Javascript по-прежнему применяется, а остальная часть вашей функции будет продолжать выполнить, в результате чего вы попытаетесь отправить другой ответ, который является источником предупреждения «заголовки уже отправлены».
Итак, добавьте возврат к каждому из этих операторов if
, чтобы остановить дальнейшее выполнение функции после отправки ответа.
if (req.query.username === undefined) {
res.status(400).send('`username` query parameter missing.');
return;
}
if (req.query.hash === undefined) {
res.status(400).send('`hash` query parameter missing.');
return;
}
Я бы также предложил вам слегка изменить эти операторы if, чтобы включить больше условий, таких как пустые строки:
if (!req.query.username) {
res.status(400).send('`username` query parameter missing.');
return;
}
if (!req.query.hash) {
res.status(400).send('`hash` query parameter missing.');
return;
}
FYI, также исправьте написание слова " параметр».