【发布时间】:2016-09-26 17:50:10
【问题描述】:
我使用 Node.js 和 Express.js 创建了一个 REST API。 在一个 URL 上,当我再次调用此 URL 时收到一条错误消息:
发送 json 错误:[错误:发送后无法设置标头。]
所以,我添加了一个 try catch 来捕获错误。但奇怪的是,这项工作很好。错误被捕获并发送我的响应:
try {
res.status(200).json(user);
} catch (e) {
console.log('send json error:',e);
}
res.on('finish', function() {
console.log('All is ok, response sent with user datas');
});
我认为这不是很干净的解决方案。所以我想知道为什么会抛出这个错误以及如何为这个问题编写一个干净的解决方案?
【问题讨论】:
-
你能分享你遇到这个问题的完整代码吗?
-
你能显示你的原始代码吗?可能的答案是,在您的错误处理程序已经在响应流中发送某些内容之后,您正在一个处理程序中调用 res.json()
-
@Paul:这里的代码很长:jsfiddle.net/120sav99
-
你应该以模块化形式编写代码,它会在调试过程中产生问题。尝试将其分解为小函数
-
您的代码看起来不错。尝试添加导致此异常的确切代码并添加异常日志(带有行号)。它可能有助于调试。
标签: javascript node.js http express http-headers