RangeError:长度>使用NodeJS读取海量文本文件时的kMaxLength

时间:2012-10-19 16:04:54

标签: javascript node.js

我有一个巨大的(~1.5 gig)文本文件,可以用'fs'读取它,它让我回复了这个错误:

RangeError
RangeError: length > kMaxLength
    at new Buffer (buffer.js:242:21)
    at fs.js:130:16
    at Object.oncomplete (fs.js:297:15)

以下是我的代码的一部分:

var fs = require('fs');
fs.readFile('file.txt', 'ASCII', function (err, data) {
  console.log(data)
});

即使我使用此命令,它也会让我失误:node --max-old-space-size = 8000 file.js 欢迎任何建议:) 谢谢!

2 个答案:

答案 0 :(得分:4)

即使是64位安装,也无法将内存限制增加到超过~1.7GB(32位为~1GB)。请参阅FAQ。因此,您无法将--max-old-space-size设置为超出此限制。

您可以使用streaming read接口来代替文件吗?

答案 1 :(得分:0)

JohnnyHK提到,using streams是正确的解决方案。使用fs.createReadStream从文件系统创建流:

fs.createReadStream('file.txt', {encoding: 'ASCII'}).pipe(process.stdout)