使用 respon.json() 时无法设置标头后发送到客户端

我想创建一个获取数据的 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('/');

    }

});


繁华开满天机
浏览 71回答 1
1回答

米脂

出现此错误是因为res在您的代码中多次调用,即:res.json(info)- 时而时res.sendFile- 也在这里,例如您需要确保res一次只调用一次。换句话说,response每个request.希望能帮助到你。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript