问题标签 [transform-stream]

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 回答
1341 浏览

javascript - 如何让 NodeJS 转换流为每个输入块发出多条记录?

我正在编写一个转换流,它接受一个传入的 XML 流并将其中的一个子集作为 JS 对象发出。

需要写两个item对象

因为它将通过管道传输到 CSV 写入器中。

代码看起来像

当 xml 很简单时

这很好用,但是当它遇到item多个文件时,它就会停止并在第二个发生时'end'立即触发。tranny.write

如何让转换流为每个输入块发出多条记录?

0 投票
1 回答
495 浏览

json - 在 JSON 对象中包装 nodejs 流

我有一个可读的流,像这样:

加密在整个文件上按预期工作。我需要将加密的结果包装成某种 json,所以输出流接收这样的东西:

我怎么做?

此外,如果加密密钥匹配,我需要读取存储在磁盘上的文件并将其从 json 中解包。

提前致谢

0 投票
2 回答
1599 浏览

javascript - 如何使用节点变换将一个对象转换为另一个对象

我是 Node 流的新手,并试图弄清楚为什么事情没有按预期工作。我只是在练习,想做一个愚蠢的变换。

最后我运行脚本并通过标准输入输入:

我也试过:

但是循环将块视为字符串而不是对象。所以我看到如下输出:

我尝试了以下各种组合:

并且还在_transform()使用:

butobj从来都不是一个对象,而是一个字符串。

我的目标是在我的转换流中接收一个对象,改变它,然后输出它。但是我只能处理字符串,即使使用JSON.parse().

我在哪里错了?

更新 - 部分解决方案

问题出在我使用JSON.parse(). 我试图解析:

哪个是有效的 JS,但不是有效的 JSON,呵呵!

然而,更大的问题仍然存在。我已将 Transform 流设置为: writableObjectMode = true,但是当我这样做时:

我得到错误:

TypeError: Invalid data, chunk must be a string or buffer, not object

如果我做:

事情按预期工作。

但是,考虑到我已经在对象模式下设置了东西,这不应该在没有字符串化的情况下工作吗?

0 投票
2 回答
718 浏览

javascript - 如何编写一个异步函数来解决`data`事件发射器触发

我正在使用 node-serialport 与一块硬件进行通信。它只是写一个命令并接收一个响应。

https://serialport.io/docs/en/api-parsers-overview

以下代码有效:

然后从我的应用程序(用电子/反应编写)我可以调用该函数:

无论如何我可以重构这段代码以使其更简洁吗?

有没有办法从async函数中获取 Promise,而不必做出新的 Promise?

有没有办法利用已经存在的转换流并以某种方式将 Promise 传递到那里?

我也是 async/await 的新手,想避免使用回调,尤其是在 React/Redux 方面。

I aim to have a lot of these endpoints for the api (i.e. getFirmwareVersion, getTemperature, etc...). So I want to make the code as concise as possible. I don't want the UI to have any underlying knowledge of how the API is getting the data. It just needs to request it like any other API and wait for a response.

0 投票
1 回答
625 浏览

node.js - 使用 Benchmark.js 测试转换流 (Node.js) 期间的问题

我正在尝试对 NodeJS 代码进行基准测试,但出现以下错误:

我的代码独立工作,但不适用于 Benchmark.js。问题出在哪里?似乎当 Benchmark.js 开始第二次测试时,它会尝试在已关闭的文件上写入,但我看不到问题所在。

0 投票
2 回答
210 浏览

node.js - 丢弃 NodeJS 转换流中的块并读取下一个

如何丢弃 NodeJS 转换流中的一个块并从前一个流中读取下一个块?

如果它没有通过 ruleCheck 流中的某些标准,我想丢弃该块。

0 投票
1 回答
201 浏览

javascript - 哈夫曼算法与 Node JS 中的流

我在 Node JS 中实现了Huffman 算法,它看起来像这样:

但我想像这样实现它:

问题是我需要两次读取源文件的内容。首先是创建频率表和霍夫曼树,其次是对内容进行精确编码。那么有没有可能用 Transform Stream 来实现这个任务呢?

PS带解码没问题

0 投票
1 回答
102 浏览

javascript - Shopify Server 不允许完整的文件下载

我使用 webpack 编写了一个页面并将其集成到 shopify 商店中。该站点在我的本地服务器上运行良好,但在 shopify 服务器上运行良好。

问题是由于这部分: 

它在我的本地“Windows 10”计算机上运行良好,带有 shopify 主题服务。每个目标文件加载四个块。它在 CentOS 7 服务器上的先前站点版本中也可以正常工作。

将页面推送到 shopify 服务器时,目标文件未完全加载。只有一个碎片块被加载,仅此而已。

我尝试过 Brave、Chrome、Firefox 和 Edge。所有相同的结果。似乎 fetch 没有下载完整的文件。

更新: url 由 shopify 动态计算,类似于“https://cdn.shopify.com/s/files/1/0592/8421/4512/t/1/assets/42a0ee4e462cc7ac412522343.zip”

在本地,文件已使用 fetch 正确加载,并且可以使用提供的链接直接从浏览器下载。

在 shopify 服务器上,提取不起作用。当我尝试从浏览器直接下载时,它会返回一个名称正确的 1ko 文件(而不是 ~100ko)。

0 投票
1 回答
45 浏览

node.js - NodeJS net.socket 按条件/过滤器管道

我是 NodeJS 的新手。现有的 net.socket 管道需要按条件过滤以不连接到“con2”,我现有的代码如下。

我找到了 Transform 和 PipeLine 方法,到目前为止,我尝试过,示例代码还不适用于我的场景。

条件是在“con1”读取流数据有一些关键字。例如“输出” 然后,不要将数据连接或转换为空到“con2”。这样,“con2”就不用处理了。

启动.js

代理.js

请帮忙指教。提前非常感谢。

0 投票
1 回答
19 浏览

node.js - Two confusions about transform stream part of node.js documentation around pre-ES6 style

Here is the doc I am confused with.

When using pre-ES6 style constructors

  1. Why do we need to check this instanceof MyTransform? As far as I know, as long as we invoke new MyTransform(), evaluation of this instanceof MyTransfrom will always return true. Maybe using MyTransform() to create a Transform instance can be found in many code bases? This is the only reason I could guess.

  2. What is the purpose of util.inherits(MyTransform, Transform); ? Just to ensure that new MyTransform() instanceof Transform returns true?

Thank you for your time in advance!