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

node.js - 使用 Promise 完成 Gulp Stream

我正在尝试读取文件,进行基于承诺的转换并将结果推送到流中。这是示例代码。

出于某种原因,当承诺解决并且我尝试调用回调时,我在下游没有得到任何东西,并且流永远不会完成。

我也试过 this.push(result) 然后调用回调但仍然是同样的问题。任何帮助,将不胜感激

0 投票
1 回答
463 浏览

node.js - 节点流未完成但发出结束

我正在阅读这篇文章并根据示例编写了我的代码。

我的代码:

const through = require('through2'); const bluebird = require('bluebird');

我尝试使用上述程序读取和删除大约 400 条记录。但从日志中,我发现流承诺 ( streamToPromise(stream)) 已解决,但仍有几条记录。从日志中,我得到:

如何解决这个问题?谢谢

0 投票
1 回答
1067 浏览

json - git log in JSON - 将更改日志发送到浏览器

为了了解实际提交给生产项目的内容,我们将向管理员显示 Git 日志——这将作为临时变更日志。

我在 Node.js Express 服务器上有这个例程:

这种工作,但我们实际上并没有得到一个 JSON 数组,我们只是得到逗号分隔的 JSON 字符串。

我在这里得到了这个信息表: https ://gist.github.com/varemenos/e95c2e098e657c7688fd https://git-scm.com/docs/pretty-formats

有谁知道我如何从 Git 命令的标准输出构造一个 JSON 数组?

我试过这个:

我的解析器转换工作,因为我在另一个项目中使用它,所以它是来自导致问题的标准输出的 JSON 格式 - “数据”事件处理程序永远不会看到任何数据。

0 投票
2 回答
898 浏览

node.js - 如何防止结束消息关闭 Nodejs 流?

在节点服务器中,我将一系列流连接在一起。比如说:

最终 streamA 完成,此时我想将下游切换到另一个源:

但是当我尝试这样做时,我收到以下错误:

如何防止 streamA 关闭我的下游?或者我怎样才能打开我的下游备份以将它们切换到streamD?

此外,我的用例要求我等到 streamA 结束。我不能过早地切换流。

0 投票
0 回答
48 浏览

node.js - 如何通过处理下载过程中 WiFi 丢失的节点流实现大文件下载?

我正在尝试使用 node.js 可读流下载具有一定容错性的非常大的文件。

我尝试过类似的方法:retry-request 但这不能处理掉线的 WiFi 连接。流永远不会恢复,并且调用 .resume() 不起作用。

当您的互联网连接在中间中断时,如何重新启动大文件下载流?

如果您使用request启动以下操作,然后关闭您的 WiFi,然后再次打开,则流就在那里。

0 投票
1 回答
4989 浏览

javascript - 如何使用 Node.js writeStream 将 JSON 数组写入文件?

我编写了一个小 Node.js 脚本来从一个网站上抓取数据,我在该网站上迭代页面以提取结构化数据。

我为每一页提取的数据是对象数组的一种形式。

我想我可以使用fs.createWriteStream()方法来创建一个可写流,我可以在每次提取页面后增量写入数据。

显然,您只能将 String 或 Buffer 写入流,所以我正在做这样的事情:

但最后,一旦我关闭流,JSON 格式错误,因为显然我只是一个接一个地附加每个页面的每个数组,结果如下所示:

我怎样才能继续将数组实际附加到输出中而不是链接它们?它甚至可以吗?

0 投票
1 回答
640 浏览

node.js - PapaParse 和高地

我必须在 NodeJS 中解析一个非常大的 CSV 文件并将其保存在一个数据库(异步操作)中,一次最多允许 500 个条目。由于内存限制,我必须流式传输 CSV 文件并希望使用 PapaParse 来解析 CSV 文件(因为这在我的情况下效果最好)。

由于 PapaParse 使用回调样式方法来解析 Node.js 流,我没有看到一个容易结合 highland(用于批处理和数据转换)和 PapaParse。因此,我尝试使用 ParseThrough 流向该流写入数据并读取该流以进行批处理:

显然,这不起作用,也没有真正做任何事情。是否有可能甚至更好的方法来解析非常大的 CSV 文件并将行保存在数据库中(最多 500 个批次)?

编辑:使用csv包(https://www.npmjs.com/package/csv)可能会像这样(相同fast-csv):

但不幸的是,这两个 NPM 包都不能在所有情况下正确解析 CSV 文件。

0 投票
1 回答
841 浏览

node.js - Nodejs:RangeError:Object.stringify(本机)超出了最大调用堆栈大小

当我调用以下函数将数组对象写入文件时,它在正常大小的数组下正常工作

但是当数组中有大约 5000 个元素时,我会收到以下错误:

任何解决方案?

0 投票
1 回答
6160 浏览

node.js - 如何在 Node 中关闭标准输入?

我正在学习 Node.js,并认为我有一个非常简单的脚本,但任何调整都不会让我的脚本永远挂起。

假设我正在运行一个愚蠢的服务器:

我运行以下脚本:

但是当我执行以下操作时:

它只是挂起,永远不会到达请求回调。我希望 req 流结束并调用 http.request 回调,然后输出Works并最终退出该过程。

我已经检查过该end事件确实是从中调用的,process.stdin.pipe()并且我试图在回调中手动结束req流。end但它只是不会结束。如何将标准输入通过管道传输到 http.request 并且仍然让它结束流?

0 投票
1 回答
9265 浏览

node.js - 如何在可读的 http 流上运行 Sharp 转换并写入 toFile

这个问题是关于节点 Sharp 库http://sharp.pixelplumbing.com/en/stable/api-input/

构造函数的文档说,如果将流传输到锐利的对象中,它可以从流中读取图像数据。“JPEG、PNG、WebP、GIF、SVG、TIFF 或原始像素图像数据在不存在时可以流式传输到对象中。”

我正在尝试将来自 GCS 的 HTTP GET 的可读流通过管道传输到转换中,然后用于toFile在文件中获取转换后的图像。我从 Sharp 收到一个错误,表明它没有正确输入图像数据。这是执行此工作流程的函数的一部分的代码。

GoogleCloudStorage.GET基本上返回File.createReadStream云存储文件对象。我已经在脚本中测试了这个 GET 调用,它可以工作。GoogleCloudStorage.POST用途File.createWriteStream传递的可读流并将其通过管道传输到其中。因此它需要接收一个可读的流,这就是为什么我试图将锐化转换写入文件。

我得到的错误输出:

更新:我尝试File.download改用,并且有效。所以要么我错过了将流管道化为锐利的东西,要么锐利有一个错误。