&引用;管道中未处理的流错误";-Node.js/request中的文件下载过多?
我试图使用Node(特别是请求模块)从JSON提要下载许多(大约2000)图像。当我尝试这样做(通过JSON循环)时,我得到&引用;管道中未处理的流错误";-Node.js/request中的文件下载过多?,node.js,request,Node.js,Request,我试图使用Node(特别是请求模块)从JSON提要下载许多(大约2000)图像。当我尝试这样做(通过JSON循环)时,我得到 thrower;//管道中未处理的流错误。 我选中了ulimit-n并将其设置为256,因此我将其增加到4000,但仍然会出现相同的错误(尽管我下载了更多的图像) 我有两个问题 如果我提高的最大下载数量远远超过了我实际拥有的同步下载数量,为什么我仍然会遇到错误 什么是“排队”或暂停下载的最佳方式,以免淹没我的系统?这是我的密码 var fs=require('fs'))
thrower;//管道中未处理的流错误。
我选中了ulimit-n
并将其设置为256,因此我将其增加到4000,但仍然会出现相同的错误(尽管我下载了更多的图像)
我有两个问题
var fs=require('fs'))
,http=require('http')
,request=require('request'))
,url='1〕http://www.urlOfJsonFeed“
function get(){
http.get(url, function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
jParse(body);
});
}).on('error', function(e) {
console.log("Got error: ", e);
});
}
function jParse(info){
data = JSON.parse(info)
entries = data.entries
numToDownload = entries.length;
for(var i = numToDownload - 1; i >= 0; i -= 1){
link = entries[i]['imgUrl']
download(link, 'images/' + mov + '.mp4', function(){
console.log('Downloaded ' + dMov + ' movies')
dMov++
}
}
}
var download = function(uri, filename, callback){
request.head(uri, function(err, res, body){
if (err) {
console.log('header error');
}
if (!err && res.statusCode == 200) {
//Download the image
request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
}
});
};
get()
你解决过这个问题吗?我实际上忘记了这个问题,没有解决它。不过,我认为这不会太具有挑战性。一种方法是使用Promissions并将下载队列设置为300个左右。感谢您回复Startec。昨天写了评论后,我设法解决了我的问题。我注意到文件完成后我没有关闭流。我还没有测试过超过500个文件,但我认为我不需要排队下载。示例:让file=fs.createWriteStream(filePath).on('finish',()=>{file.end();});