Ошибка [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту. ПЫТАЙТЕСЬ ОТПРАВИТЬ ДАННЫЕ ИСПОЛЬЗУЯ HTTP - PullRequest
0 голосов
/ 29 марта 2020

Я получаю следующую ошибку

Ошибка [ERR_HTTP_HEADERS_SENT]: Невозможно установить заголовки после того, как они отправлены клиенту в ServerResponse.setHeader (_http_outgoing. js: 526: 11) в ServerResponse.header ( /Users/admin/Desktop/3100/a4/node_modules/express/lib/response.js:771:10) в ServerResponse. json (/ Users / admin / Desktop / 3100 / a4 / node_modules / express / lib /response.js:264:10) в ServerResponse.send (/Users/admin/Desktop/3100/a4/node_modules/express/lib/response.js:158:21) в операторе. (/Users/admin/Desktop/3100/a4/app.js:95:17) -> в базе данных # все ('ВЫБРАТЬ * ОТ ПОЛЬЗОВАТЕЛЕЙ, ГДЕ julianday (?) <= Julianday (время) И julianday (время ) <= julianday (?); ', [undefined, undefined], [Function]) в /Users/admin/Desktop/3100/a4/app.js:90:12 в Layer.handle [как handle_request] ( /Users/admin/Desktop/3100/a4/node_modules/express/lib/router/layer.js:95:5) на следующем (/ Users / admin / Desktop / 3100 / a4 / node_modules / express / lib / router /route.js:137:13) в jsonParser (/Users/admin/Desktop/3100/a4/node_modules/body-parser/lib/types/json.js:119:7) на уровне. обрабатывать [как handle_request] (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/layer.js:95:5) в следующем (/ Users / admin / Desktop / 3100 / a4 / node_modules /express/lib/router/route.js:137:13) в Route.dispatch (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/route.js:112:3 ) в Layer.handle [as handle_request] (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/layer.js:95:5) в / Users / admi n / Desktop / 3100 / a4 / node_modules / express / lib / router / index. js: 281: 22 в параметре (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/index.js: 354: 14) в параметре (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/index.js:365:14) в параметре (/ Users / admin / Desktop / 3100 /a4/node_modules/express/lib/router/index.js:365:14) в Function.process_params (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/index.js : 410: 3) на следующем (/Users/admin/Desktop/3100/a4/node_modules/express/lib/router/index.js:275:10) на serveStati c (/ Users / admin / Desktop / 3100 / a4 / node_modules / serve-static / index. js: 75: 16) {code: 'ERR_HTTP_HEADERS_SENT', __augmented: true} </p>

** Я пытаюсь отправить данные. Вот что я сделал:

    db.all(
        `SELECT * FROM users WHERE julianday(?) <= julianday(time) AND julianday(time) <= julianday(?);`, [add1.start,add1.end],function(err,rows){

        if (!err){
        console.log("Directly inside rows is: ",rows);
        res.send(rows);
        }
        else{
           res.send(err);
        }
    });

  res.end();

**

1 Ответ

0 голосов
/ 29 марта 2020

res.end в последней строке вызывается синхронно после возврата db.all, но до вызова обратного вызова базы данных (асинхронно). Когда вызывается обратный вызов db.all, ответ уже завершен.

Предлагаемое решение: удалите оператор res.end().

(Как обсуждалось в ответах на this.question , res.send заканчивает ответ за вас.)

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