用Node下载文本文件

时间:2019-07-13 17:01:09

标签: node.js http fs

我想使用Node下载并保存文本文件。但是在下载<version>11.2.0.4.0</version>方法之后,将错误返回到内存不足。通过将pipe的大小设置为零(0),错误消失了,但是文件的大小超过了1 GB!

emitter
  

错误:MaxListenersExceededWarning:可能的EventEmitter内存泄漏   检测到。添加了11个最终侦听器。使用发射器

我找不到从网络保存文本文件的任何解决方案。最好的方法是什么?

编辑: 我移动管道方法来解决内存问题。但是在文件中,它放置的是二进制数据而不是文本。如何将文件另存为文本文件?

2 个答案:

答案 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);
  });
};