问题标签 [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 回答
592 浏览

node.js - Node.js:第一个字符在 fs.createReadStream 中未定义

我试图从一个简单的文本文件中读取流,并在读取流完成后记录所有字符,但奇怪的是,每次第一个字符总是未定义时。我不确定从文本文件中读取流时是否遗漏了任何内容。

`

` 终端截图

0 投票
1 回答
831 浏览

javascript - 如何将事件发送到 gulp-tap 的父流中

我正在设置一个 gulpfile,用于在开发过程中将多个 JavaScript 文件捆绑到多个包中。

由于我想观看此过程并且如果其中一个文件中存在错误(语法或其他东西)不让它退出,我需要正确地end向父流发出事件。

为了处理多个文件,我使用了 gulp recipes 中描述的方法

但是使用它并阅读gulp-tap 上的文档我不确定如何让它将错误发送到父流中。

我想做的是以下几点:

如果我将回调传递给bundle()调用,我可以看到错误,但我不知道如何将它返回到父流中。

0 投票
0 回答
301 浏览

node.js - 读取文件时出错。超出最大调用堆栈大小,同时尝试在流中创建带有猫鼬的项目

我正在尝试写入 DB,同时从流中的大 CSV 文件读取,但我得到的只是“超出最大调用堆栈大小”错误。并且总是在 12969 行之后。如果我不保存到数据库,一切正常。我的代码示例:

0 投票
0 回答
85 浏览

javascript - 具有节点流功能的 Meteor.bindEnvironment 失去上下文

在使用 Meteor.bindEnvironment 调用 Meteor 方法来创建新的 Fiber 时,数据上下文不再可用。插入 ID 返回未定义。

我曾尝试使用 Meteor.bindAsync,因为我认为我会有一个新的 Fiber 和原始数据上下文,但我仍然收到 Meteor 必须在 Fiber 中运行的错误。插入完成后,如何将 newID 绑定到原始数​​据上下文以将其传回?

0 投票
1 回答
836 浏览

javascript - Node.js Stream Transform 是否保持块的顺序?

我看到 Node.js Stream API 中的 Transform Streams 使用异步函数在块到达时对其进行转换: https ://nodejs.org/api/stream.html#stream_transform_transform_chunk_encoding_callback

Transform 流是否按照它们到达的顺序发送块?因为对于异步函数,情况并非如此。

0 投票
1 回答
609 浏览

node.js - 考虑背压,将数据从 Cassandra 流式传输到文件

我有收集投票提交并将它们存储在 Cassandra 中的 Node 应用程序。投票存储为 base64 编码的加密字符串。API 有一个名为的端点/export,它应该获取所有这些投票字符串(可能 > 100 万),将它们转换为二进制文件并将它们一个接一个地附加到 votes.egd 文件中。然后应该压缩该文件并将其发送给客户端。我的想法是从 Cassandra 流式传输行,将每个投票字符串转换为二进制文件并写入WriteStream. 我想将此功能包装在 Promise 中以便于使用。我有以下内容:

当我运行它时,它会将所有投票附加到文件并下载正常。但是我有很多问题/疑问:

  1. 如果我向/export端点发出请求并且此函数运行,则在它运行时对应用程序的所有其他请求都非常慢,或者只是在导出请求完成之前没有完成。我猜是因为事件循环被 Cassandra 流中的所有这些事件占用(每秒数千个)?

  2. 所有的投票似乎都很好地写入了文件,但我false几乎每次writeStream.write()通话都会收到相应的记录消息(见代码)?

  3. 我知道我需要考虑 WritableStream 的背压和“排水”事件,所以理想情况下我会使用pipe()投票并将其传送到一个文件,因为它内置了背压支持(对吗?)但是因为我需要处理每一行(转换到二进制并可能在将来添加来自其他行字段的其他数据),我将如何用管道做到这一点?

0 投票
1 回答
101 浏览

node.js - 节点管道处理输入

我正在将文本文件中的数据传输到另一个管道,该管道正在从某些 url 下载图像。现在正如预期的那样,这会快速连续发送大量请求,远程服务器将我关闭。我只想在处理第一个块之后处理下一个块。我的代码是:

由于我刚刚开始研究流,我可能错过了一个非常简单的点,或者我热衷于使用流,我可能忽略了更好的方法

  • 非常大的 json 文件
  • 延迟下载图像
0 投票
0 回答
769 浏览

javascript - 如何制作“同步”nodejs转换流?

目前,我正在使用一个名为“ChunkingStream”的转换流来接收和处理来自 TCP 套接字(并通过管道传输到其他地方)的数据。一般结构与nodejs doc中给出的示例几乎相同:

然而,由于数据块的顺序在这个问题中很重要,它看起来像这样的调用:

是异步的。

因此有什么方法可以使上述调用同步吗?干杯!

0 投票
1 回答
357 浏览

node.js - 节点流 - 在可读流中监听 unpipe

因此,我创建了一个读取流,它首先连接到 SFTP 并开始从文件中读取。在任何时候,我的代码都可以解除该 readstream 的管道并执行其他操作。例如,我可能会使用它来获取 CSV 的前几行并停止阅读。

问题是,我不知道如何unpipe在我的 readStream 构造函数中监听事件,以便我可以正确关闭 SFTP 连接。我flush在写入流中使用了一种方法,对于读取流有类似的方法吗?

这是我的 readStream 构造函数的简化部分:

稍后我可能会打电话给myStream.pipe(writeStream)然后myStream.unpipe()。但因为我无法监听该unpipe事件,读取停止,但 SFTP 连接保持打开状态并最终超时。

有任何想法吗?

0 投票
2 回答
1024 浏览

javascript - 如何使用对象列表作为 gulp 源流

我知道 gulp 需要乙烯基源流才能正常工作,但是有没有一种简单的方法可以使用已经存在的乙烯基文件或 json 对象,而不是众所周知的只需要 glob 的 gulp.src?