Невозможно установить заголовки после их отправки клиенту при использовании respone. json () - PullRequest
1 голос
/ 16 июня 2020

Я хочу создать API для получения данных. Но функция res. json () обнаружила проблему в соответствии с сообщением ниже

web_1         | Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
web_1         |     at ServerResponse.setHeader (_http_outgoing.js:533:11)
web_1         |     at ServerResponse.header (/mbs_welfare/node_modules/express/lib/response.js:771:10)
web_1         |     at ServerResponse.send (/mbs_welfare/node_modules/express/lib/response.js:170:12)
web_1         |     at /mbs_welfare/server.js:45:9
web_1         |     at Layer.handle_error (/mbs_welfare/node_modules/express/lib/router/layer.js:71:5)
web_1         |     at trim_prefix (/mbs_welfare/node_modules/express/lib/router/index.js:315:13)
web_1         |     at /mbs_welfare/node_modules/express/lib/router/index.js:284:7
web_1         |     at Function.process_params (/mbs_welfare/node_modules/express/lib/router/index.js:335:12)
web_1         |     at next (/mbs_welfare/node_modules/express/lib/router/index.js:275:10)
web_1         |     at Layer.handle_error (/mbs_welfare/node_modules/express/lib/router/layer.js:67:12)

l

router.get('/profile/user/me', async (req, res, next) => {
    let user = req.session.user;
    if(user) {
        try {
            let me = user.adminID
            let info = await knex('admin_accounts').where('adminID', me)
            res.json(info)
        } catch (e) {
            console.log(e);
        }
        res.sendFile(path.join(__dirname + '/../public/personal_information.html'));
    }else{
         res.redirect('/');
    }
});

1 Ответ

0 голосов
/ 16 июня 2020

Эта ошибка возникает из-за того, что res вызывается в вашем коде более одного раза, то есть:

res.json(info) - здесь и затем

res.sendFile - здесь также для пример

Вам нужно убедиться, что res вызывается только один раз.

Другими словами, только один response разрешен на request.

Надеюсь, это поможет.

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