问题标签 [createwritestream]

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 投票
0 回答
151 浏览

node.js - writeStream write 将未知字符添加到markdown文件

我正在尝试通过 Web 界面编辑降价文件。我已经可以在我的编辑器中成功读取和解析文件。

现在我正在尝试在用户输入时更新原始文件。我正在使用带有 r+ 标志的 createWriteStream。用户输入已成功写入目标文件,但文件中不断添加一些奇怪的字符。

我认为这是一些编码问题,但不知道该怎么做。

这是我的代码:

所以基本上,每次用户打开一个文件时,我都会重置编写器并创建一个新的。当用户键入时,将调用 writeNewData 函数,将整个文档的文本作为参数传递。所以我截断了内容并写了新的。

这是我打开文件时的内容:

这是更新后的: 奇怪的字符

我尝试将编码显式设置为“utf8”,但没有成功。我在文档中搜索了选项及其描述,但我必须说我在这个过程中迷路了。

我还尝试了 strip-bom 库,认为它可能是 BOM 字符(仍然不确定)但没有成功。

编辑:

看起来这个问题只在使用 truncate 方法时发生。我尝试使用 truncateSync 但发生了同样的问题。如果我根本不使用截断,除了文件的全部内容不断地附加到前一个内容之外,没有问题。导致这样的事情:

0 投票
2 回答
244 浏览

javascript - Javascript Promise 无法解析 createWriteStream

我尝试了许多让我的函数返回参数的变体,这样我只能在一个步骤完成时运行我的函数,但寻找不会让我陷入回调地狱的最佳方法。

我有以下功能

我在这里这样称呼:

这是 PromiseAll 中调用的方法

无论我尝试什么问题,我都无法保证 compareItems 在 convertPdfToImage 之后运行(PromiseAll 已解决)

0 投票
1 回答
536 浏览

node.js - 未接收到数据时向 Node.js 流添加“静默帧”

我正在使用 Node.js 创建一个 Discord.js 机器人,它在语音通道中记录用户的音频。它加入一个频道并开始分别收听每个用户。它记录到一个 .pcm 文件(所以只有原始数据)。

现在,这可行,但是 Discord 的音频流的性质导致了一个问题。从 Discord 的 API 获得的音频流仅在特定用户说话时发送数据,而不是在他们沉默时发送数据。这导致用户说话的时刻被一个接一个地粘贴,中间没有沉默。

例如,我说话 5 秒钟,然后停止说话 5 秒钟,然后再开始说话,依此类推。如果我这样做 1 分钟,我将得到一个只有 30 秒长的文件,因为 5 秒的静音没有记录在流中。

代码看起来像这样(receiver这是 Discord API 为语音连接提供的,当我发出命令时流任意结束):

audioStream输出是 16 位 little-endian 44100 Hz 流(因此仅在用户讲话时)。

有没有办法可以用某种无声帧填补数据空白?或者也许保持静默流运行,只在数据进来时才输入数据?

0 投票
1 回答
955 浏览

node.js - 在NodeJS中完成下载和文件保存后从异步函数返回

我有一系列的事件是这样的:

在文件实际在磁盘上之前,我的代码会继续运行。这是我的下载功能:

下载完成downloadSyncFile()后,该功能似乎正在返回axios,但未完成对磁盘的写入。

如何确保文件在downloadSyncFile()返回之前安全地写入磁盘?

0 投票
0 回答
248 浏览

node.js - 如何使用 Node.js 流附加到文件末尾?

我有一个 node.js 应用程序,它打开一个流:

然后,我异步地将文本添加到文件中:

这段代码在循环中运行,所以它发生了数百次。但是,循环是异步的,所以它有时会暂停,同时我可以output.txt在外部编辑器中编辑文件,并且(例如)在开头添加一些字符。

但是,当我这样做时,下次outputStream.write执行时,它会覆盖之前添加的最后几个字符(与我在外部添加的字符数相同)。

有什么方法可以防止这种情况吗?某种方式告诉writeStream找到文件的结尾,然后添加文本?

0 投票
1 回答
791 浏览

node.js - 谷歌云存储上传 0 字节 Node.js

我正在使用谷歌云存储。此代码将在存储桶中保存一个对象,但它只是空的。它显示大小为 0 字节

0 投票
1 回答
199 浏览

node.js - 无法使用一个可读流写入 Node JS 中的两个不同目标

我有一个客户端应用程序,用户可以在其中上传图像。我在我的 Node JS 应用程序中收到此图像作为可读数据,然后在保存之前对其进行操作,如下所示:

这工作正常,并将文件写入项目本地目录。当我尝试在同一个异步函数中再次使用相同的可读数据时,问题就出现了。请注意,所有这些代码都在 try 块中。

第二个文件已写入,但当我检查文件时,它似乎已损坏或未成功写入数据。第一张图总是好的。

我尝试了几件事,发现了一种似乎有效的方法,但我不明白为什么。我在创建第二个写入流之前添加了这段代码:

将第二个写入流的代码放在 on-end 回调块中并没有什么区别,但是,如果我将代码留在块之外,在第一个写入流代码和第二个写入流代码之间,那么它可以工作,并且两个文件都已成功写入。

让代码保持原样感觉不对。有没有更好的方法可以写第二个缩略图?在第一个写入流写入数据后,我尝试使用 Sharp 模块读取文件,然后创建它的较小版本,但它不起作用。该文件似乎从未准备好使用。

0 投票
1 回答
105 浏览

javascript - 使用axios收到403错误时如何阻止writestream创建文件

我正在使用 axios 下载图像并将它们保存在本地。我从https://stackoverflow.com/a/61269447/7468791获取了以下答案,该答案适用于较大的图像,以确保它们在写入之前已完全下载。

但是,某些图像 url 返回 403 错误。我仍然得到为这些创建的图像文件,尽管是一个空文件。我如何调整代码,以便如果 get 请求收到 403 错误,它不会尝试编写任何内容?

}

0 投票
1 回答
744 浏览

node.js - WriteStream nodejs出内存

我尝试创建一个 20MB 的文件,但它抛出了内存错误,将 max-old-space-size 设置为 2gb,但仍然有人可以向我解释为什么写一个 20mb 的流会消耗这么多内存?

我有 2.3 GB 的可用内存

0 投票
2 回答
1394 浏览

node.js - 如何等待stream.write()的循环结束

我正在使用 Node 的 fs.WriteStream 将数据写入文件。我正在遍历一个对象数组并使用write()函数写入每个对象。

问题是我想知道一旦这个循环结束并且所有的write()调用都完成了,但我不能让它工作。

我尝试了一些解决方案,例如不使用流,但这会产生其他问题。我上次尝试的解决方案是检查循环是否是最后一项,如果是,则关闭、结束或销毁流。

这些都不起作用。该事件是在文件实际写入之前发出的。

下面是我的代码,我很感激我能得到的任何帮助。非常感谢。