问题标签 [node-streams]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2339 浏览

javascript - 如何在`createReadStream`上模拟EventEmitter?

我正在尝试编写一个测试用例,以了解由于此代码而引发错误的时间:

我已经使用虚拟 S3 对象进行了测试,并且我正在使用 MemoryStream 来涵盖调用成功的情况。如何发出错误,以便我可以编写一个允许我测试行为的测试.on('error') function(error)..

这是我尝试过的,但没有成功:

0 投票
1 回答
85 浏览

gulp - 如何在进行更改之前解析整个 gulp 流?

我正在尝试使用 Gulp 创建一个静态站点。我遇到了一个有趣的问题,即翻译我在之前版本中编写的概念以及如何使用 Gulp 实现它。

如果我有动态包含其他文件的文件,则其中一个概念。

然后,其他文件包括具有该密钥。

... 和:

期望的最终结果是:

基本上,扫描文件并将data元素作为序列插入到包含内容的页面中。我不知道要提前包含的所有类别或标签(我将 30-40 个 Git 存储库合并在一起),所以我不想为每个类别创建一个任务。

我希望是这样的:

问题似乎是流的工作方式。我不能将两种方法链接在一起,因为每个文件都从一个管道传递到下一个管道。要插入include.files元素,我必须解析所有输入文件(它们甚至不在子目录中)以在完成之前找出包含哪些文件。

似乎我必须“拆分流”,解析第一个以获取数据,将第二个链接到第一个的末尾,然后使用第二个将结果传递出方法。我只是不完全确定如何做到这一点,并希望得到一些指示或建议。我的 google-fu 并没有真正提出好的建议,甚至没有我重组的提示。谢谢你。

0 投票
0 回答
224 浏览

c - 有没有办法将数据从 C 流式传输到 Node.js

我已经对此进行了研究,我发现可能的解决方案有一些:

有没有办法不间断地将数据从 C 流式传输到 Node.js,除非我以编程方式停止它?

0 投票
2 回答
1486 浏览

feathersjs - Streaming response in Feathers

In Express, streaming responses are easy to implement since res is a stream object.

Inside a Feathers custom service method, however, how can I stream something as a response?

0 投票
2 回答
1014 浏览

javascript - 使用 Node.js 对大文件进行排序和比较

我有两个文件,每行都有一个 UUID。每个文件都有几十万行(它们是从数据库转储生成的)。这些文件需要分类并发现差异(添加/删除)。使用一些 *nix 工具很容易做到这一点,只需要几秒钟:

但是,我想将此功能添加到我们拥有的(基于 Node 构建的)旨在用于多平台使用的 CLI 中。因此,生成子流程并委托给这些工具不是一种选择。

作为“哑巴”并将每个文件加载到内存中,在换行符.sort()上拆分并调用结果数组的效果非常好(尽管使用了大量内存,但它很快......)但发现差异证明相当困难。

我确信答案在流领域的某个地方,但我缺乏操纵它们的经验,所以我不确定从哪里开始。

使用 Node.js 加载、排序和区分此类大文件的有效技术是什么?

我不是在寻找完整的解决方案(不过,请随意!),在这个阶段,指针会非常有用。

谢谢!

0 投票
2 回答
2014 浏览

node.js - Node.js 流写入 MongoDB - 关注性能

我需要读取包含数千行的日志文件并将每一行写入 Mongo 数据库。我正在使用节点流读取文件。我正在使用“split”npm 包将文件拆分为“行”。由于网络考虑,MongoDB 写入将比日志文件读取花费更长的时间。

我的核心代码如下所示:

我是否需要担心 MongoDB 系统会受到排队写入次数的影响?大概节点管道背压机制不会知道大量的数据库写入正在排队?有什么方法可以“减慢”可读流,以便它在从日志文件中读取下一行之前等待每个 MongoDB 插入完成?我是在不必要地担心吗?

0 投票
1 回答
505 浏览

node.js - 是否应该在写入结果可用之前注册 `drain` 事件

我有这段代码:

我想知道是否即使尝试写入也是添加处理程序的标准做法?

0 投票
1 回答
16 浏览

node.js - 为什么内存消耗会增加,而不是下降并保持不变

我有以下简单的程序:

并记录以下内存消耗:

29 38 48 58 67 77 86 96 105 115 125 134 144 153 163 173 182 192 201 211 220 230 240 249 259 268 278 287 297 307 316 326 335 345 355 364 374 383 393 402 412 422 431 441 450 460 470 479 489 498 508 518 527 537 546 556 565 575 585 561

87 97 25 35 44 25 35 44 25 35 44 25 35 44 25 35 44 25 35 44 25 35 44 25 35 44 25 35 44

正如您可能看到的那样,它正在增长到561 MB,但下降到87 MB然后停留在下面100 MB。这里会发生什么?

0 投票
1 回答
1234 浏览

node.js - Node.js 转换文件流并写入同一文件会导致空文件

我正在尝试使用节点文件流和自定义转换功能修改一些文件。这是变换函数:

我尝试在以下代码中使用它:

但是,该文件最终为空。

我相信转换器代码可以按预期工作,因为我尝试将其通过管道传输到process.stdout并且输出正是我想要的。

我的问题是:我做错了什么,我可以尝试解决什么问题?

0 投票
2 回答
1931 浏览

node.js - 在 node.js 中正确使用 _writev

_writev()node.js中的正确用法是什么?文档说:

如果流实现能够一次处理多个数据块,writable._writev()则应实现该方法。

它还说:

的主要目的writable.cork()是避免将许多小块数据写入流不会导致内部缓冲区中的备份对性能产生不利影响的情况。在这种情况下,实现该writable._writev()方法的实现可以以更优化的方式执行缓冲写入。

从流实现的角度来看,这是可以的。但从可写流消费者的角度来看,调用writeor的唯一方法是通过andwritevWritable.write()writable.cork()

我想看一个小例子来描述实现的实际用例_writev()