我想使用Node下载并保存文本文件。但是在下载<version>11.2.0.4.0</version>
方法之后,将错误返回到内存不足。通过将pipe
的大小设置为零(0),错误消失了,但是文件的大小超过了1 GB!
emitter
错误:MaxListenersExceededWarning:可能的EventEmitter内存泄漏 检测到。添加了11个最终侦听器。使用发射器
我找不到从网络保存文本文件的任何解决方案。最好的方法是什么?
编辑: 我移动管道方法来解决内存问题。但是在文件中,它放置的是二进制数据而不是文本。如何将文件另存为文本文件?
答案 0 :(得分:0)
可能的尝试是:
我请求npm
然后使用以下代码代替您的代码:
var request = require('request');
var fs = require('fs');
var download = function (uri, filename, callback) {
var file = fs.createWriteStream(filename);
request(uri).pipe(fs.createWriteStream(file));
};
这样,它几乎可以在所有情况下自行处理内存/网络/背压。
答案 1 :(得分:0)
此代码将UTF-8字符串写入文本文件filepath
,但在功能上似乎等效于您的最新更新(编辑3)。
如果尝试使用此代码后仍然获得二进制/缓冲输出,请提供typeof res
的结果。
const downloadFile = (uri, filepath, callback) => {
http.get(uri, res => {
console.log(typeof res);
res.pipe(fs.createWriteFileStream(filepath))
.on('finish', callback);
});
};