在Node.js中捕获致命错误 | 致命错误:CALL_AND_RETRY_0分配失败-进程内存不足

3
我想知道是否有办法捕获这个错误:
FATAL ERROR: CALL_AND_RETRY_0 Allocation failed - process out of memory

我已经尝试过:

process.on('uncaughtException', function(err){
        //do something
 })

但这并没有捕获错误。
非常感谢您的帮助。
附言:当为大约18个文件的字符串生成MD5哈希时,我使用md5模块,如下所示:
for(i=0;i<array.length;i++){
    fs.readFile(array[i], function(err,buf){
        console.log(mdf(buf))
    })

}

你找到了处理这个的方法吗? - Aashish Upadhyay
@Aashish,请查看已接受的答案。 - MonsterWimp757
3
这并不回答“如何捕获异常”。 - Aashish Upadhyay
1个回答

1
你应该避免在内存中缓冲整个文件。而是应该分块计算md5哈希值。示例:
var fs = require('fs'),
    crypto = require('crypto');

var array = [ 'foo.txt' ];

array.forEach(function(filename) {
  var hasher = crypto.createHash('md5', { encoding: 'hex' });
  fs.createReadStream(filename).pipe(hasher).on('finish', function() {
    process.nextTick(function() {
      var md5sum = hasher.read();
      console.log(filename + ': ' + md5sum);
    });
  });
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接