【问题标题】:Why does sending multiple responses per one request crash a NodeJS server?为什么每个请求发送多个响应会使 NodeJS 服务器崩溃?
【发布时间】:2017-11-13 01:27:53
【问题描述】:

可能是一个愚蠢的问题,但我想知道 为什么 这样做,即每个请求不止一次调用 Express'res.send()(NodeJS'http.ServerResponse 的子类) NodeJS服务器?为什么它在发送第一个响应时不结束请求并简单地记录错误而不会崩溃?

【问题讨论】:

  • 我认为这是某种懒惰的防御性编程(没有明确的断言)。 Express 在服务器端运行,在那里静默失败被认为更成问题。所以我猜开发人员想要一种方法来强烈地表明出现了问题。因此,只是让关闭的套接字自行崩溃。
  • 我猜this answer对此给出了适当的解释
  • @kgangadhar 感谢您的回复,但并没有真正说明为什么他们选择了这样一种硬核方式来告诉你你试图绕过他们的范式。我在这里看到了所有相关的问题。
  • @soueuls 是的,在我看来也是如此,如果没有人发布更详细的答案,您应该并且我会将其标记为正确答案。为了以防万一,我会在两天内提供赏金。

标签: node.js express


【解决方案1】:

Express 只是抛出一个异常,然后节点处理它:

当一个未捕获的 JavaScript 异常冒泡回到事件循环时,会发出 'uncaughtException' 事件。默认情况下,Node.js 通过将堆栈跟踪打印到 stderr 并退出来处理此类异常。 doc

如果你想做其他事情,实现你自己的process.on('uncaughtException', (err) => {})

或者你可以让它崩溃并使用forever之类的东西来恢复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2022-06-16
    • 2015-10-04
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多