javascript - 使用 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('/');
}
});
解决方案
出现此错误是因为res
在您的代码中多次调用,即:
res.json(info)
- 时而时
res.sendFile
- 也在这里,例如
您需要确保res
一次只调用一次。
换句话说,response
每个request
.
希望能帮助到你。
推荐阅读
- python - 将函数的结果存储在列表python中
- php - 使用额外的嵌套键更新 PHP 数组 - Wordpress
- go - Golang:TLS Webserver 未在等待组中启动(用于正常关闭)
- android - 支持工厂 2 的 AsyncLayoutInflater
- pandas - 使用将csv数据读入熊猫时如何用类似的“英文字母”字符替换特殊字符?
- java - 为什么它给出数字作为输出而不是数组中的元素?
- selenium - 如何使用 Java 在 selenium 无头模式下滚动?
- sql - PL-SQL:返回错误 - 将元素插入(用户输入)索引并将所有元素移动到元素 [i+1]
- java - 关于Java volatile字段可见性的问题
- azure - Azure Devops 中的多个存储库签出问题