ファイルを読み取るとバッファに収まらないほどの重大なエラーが発生しました。
FATAL ERROR: v8::Object::SetIndexedPropertiesToExternalArrayData() length exceeds max acceptable value
または、
RangeError:Function.Buffer.allocUnsafe(buffer.js:209:3)では、「サイズ」引数は2147483647より大きくてはいけません
1GBのバッファを割り当てようとすると、同じ致命的なエラーが発生します。
var oneGigInBytes = 1073741824;
var my1GBuffer = new Buffer(oneGigInBytes); //Crash
Node.jsバッファークラスインスタンスの最大サイズはいくつですか?
これは現在 Nodeのbuffer
api の一部として文書化されており、最大サイズは buffer.constants.MAX_LENGTH
です。
buffer.constants.MAX_LENGTH
<integer>
単一のBufferインスタンスに許可される最大サイズ。
- 32ビットアーキテクチャでは、この値は
(2^30)-1
(〜1GB)です。- 64ビットアーキテクチャでは、この値は
(2^31)-1
(〜2GB)です。この値は
buffer.kMaxLength
としても入手できます。
だからあなたはそれを行うことによってどれほど大きいかを理解することができます
> (require('buffer').constants.MAX_LENGTH + 1) / 2**30
2
現在の最大バッファサイズは2147483647バイト、つまり2.147GBのようです
ソース: https://stackoverflow.com/a/44994896/3973137 (そして私のコード)