Node.js-如何处理流错误事件

乔恩

我正在读取从fs.createReadStream()返回的文件流,并将其通过管道传递到使用zlib.createGzip()创建的gzip流,然后通过管道将gzip流传递给HTTP响应。

我不确定如何处理这些流中的“错误”事件。我只想确保关闭所有流,记录错误,并且没有资源泄漏(请注意,文件流的autoClose设置为true)。

例如,如果在fs读取流上发生错误,那将如何影响gzip流和响应流?“错误”事件会自动传播还是只是未处理而崩溃并导致我的应用崩溃?我应该在每个流中还是在链中的最后一个流上侦听“错误”事件?如果我听fs流上的“错误”会发生什么?gzip流是否仍会检测到已发生错误?

法里德·诺里·内沙特

从一个流到另一个流的错误不会在管道上传播,因此您应该将错误侦听器附加到两个流上。

如果fs读取流有错误,如果autoClose为true,则将销毁它(它将清理并关闭文件描述符)。但是gzip流不会关闭,因此您必须手动关闭它。

如果gzip有错误,它将发出它。它不会关闭,可读流也不会关闭。

查看其他流,例如fs写流,如果在写时发生错误,则它将关闭可写流,但可读流将保持打开状态。

因此,我的建议是,在所有流上设置错误处理程序,不要依赖于错误自己关闭,因此请调用.close.destroy所有错误。

为确保您正在侦听所有错误处理程序,请使用domains

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js抛出未处理的错误事件

来自分类Dev

Node.js抛出未处理的错误事件

来自分类Dev

Alexa Node JS 如何处理多个事件的取消事件

来自分类Dev

如何对Node.js流管道中的错误事件做出正确反应?

来自分类Dev

如何处理 node.js 请求中的 URI 错误?

来自分类Dev

如何处理node.js casterror?

来自分类Dev

使用 Node,如何使用 Connect 处理数据/结束/错误事件?

来自分类Dev

我如何处理node.js中(cli)输出的(cli)stdout流的字符编码?

来自分类Dev

如何处理node.js可写流中的结束信号?

来自分类Dev

如何在保留顺序的同时异步处理Node.js中的流事件?

来自分类Dev

如何处理Node.js中的fs.createReadStream()错误?

来自分类Dev

在JavaScript(Node.js)中更新MongoDB集合时如何处理错误

来自分类Dev

如何处理Express Node.js中的主体解析器错误

来自分类Dev

Node.js中管道中未处理的流错误

来自分类Dev

如何处理node.js中的循环?

来自分类Dev

Node.js /如何处理连接泄漏?

来自分类Dev

node.js如何处理同时的http请求?

来自分类Dev

Node.JS如何处理重复的传递依赖项?

来自分类Dev

如何处理来自node.js的网页上的数据

来自分类Dev

如何处理Node.JS中的UnhandledPromiseRejectionWarning

来自分类Dev

Node.js如何处理未封闭的HTTP响应

来自分类Dev

Node.js服务器如何处理请求?

来自分类Dev

如何处理来自node.js的网页上的数据

来自分类Dev

Node.JS事件错误

来自分类Dev

在node.js中初始化|| 如何处理node.js中的初始配置

来自分类Dev

node.js中的TCP流处理

来自分类Dev

Node JS 同步事件

来自分类Dev

Node.js流如何工作?

来自分类Dev

如何重置Node.js流?

Related 相关文章

热门标签

归档