节点请求管道数据故障

时间:2018-02-12 09:39:05

标签: javascript node.js asynchronous npm-request

我正在尝试每个文件下载大约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),我前段时间问过这个问题。我重构了我的代码并认为这个问题值得一个新的,有问题的,因为另一个问题的原始主题是另一个问题。

0 个答案:

没有答案