我正在尝试每个文件下载大约 800MB。这是实现它的代码:
function makeRequest(url,name,callback){
name = promObj.Name;
requestsdone =-1;
request(url,{auth:auth}, function (err,respnse,body) {
})
.on('error', function (err) {
console.log(err)
})
.on('end', function () {
requestsdone++;
}).pipe(fs.createWriteStream('./app/data/' + name[requestsdone] + '.zip'));
callback();
}
async.eachLimit(promObj.requestURLS, 2, makeRequest, function(err) {
if(err) reject(promObj)
else{
resolve(promObj);
}
});
我将 Node.js 更新到 9.5.0 版,现在出现此错误:
<--- Last few GCs --->
[12060:000001FED372E610] 487169 ms: Mark-sweep 28.7 (35.4) -> 28.7 (35.4)
MB, 33.6 / 0.0 ms allocation failure GC in old space requested
[12060:000001FED372E610] 487205 ms: Mark-sweep 28.7 (35.4) -> 28.7 (35.4)
MB, 36.2 / 0.0 ms last resort GC in old space requested
[12060:000001FED372E610] 487240 ms: Mark-sweep 28.7 (35.4) -> 28.7 (35.4)
MB, 34.7 / 0.0 ms last resort GC in old space requested
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 000001311C6254D9 <JSObject>
1: stringSlice(aka stringSlice) [buffer.js:586] [bytecode=0000031E27B6DEE1 offset=11](this=000003FACAA022D1 <undefined>,buf=000000CDF7528259 <Uint8Array map = 00000392BE4C4D01>,encoding=000003FACAA022D1 <undefined>,start=0,end=801130252)
2: toString [buffer.js:664] [bytecode=0000031E27B6DB29 offset=148](this=000000CDF7528259 <Uint8Array map = 00000392BE4C4D01>,encoding=000003FACAA022D1...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
我怎么能解决这个问题?提前致谢。
PS:这个问题是指Requests with request-promise pipe result (Large data),我前段时间问过。我重组了我的代码,并认为这个问题值得一个新的、单独的问题,因为另一个问题的原始主题是不同的。