次の関数を呼び出して配列オブジェクトをファイルに書き込むと、通常のサイズの配列で適切に動作します
function stringifyArrayToFile(array, file) {
const transform = new stream.Transform({
objectMode: true
})
transform._hasWritten = false
transform._transform = function (chunk, encoding, callback) {
if (!this._hasWritten) {
this._hasWritten = true;
this.push('[' + JSON.stringify(chunk) + '\n')
} else {
this.push(',' + JSON.stringify(chunk) + '\n')
}
callback()
}
transform._flush = function (callback) {
this.push(']')
callback()
}
const writeable = fs.createWriteStream(file).setDefaultEncoding("utf-8")
array.toStream().pipe(transform).pipe(writeable)
}
しかし、配列に約 5000 個の要素がある場合、次のエラーが発生します。
this.push('[' + JSON.stringify(chunk) + '\n')
^
RangeError: Maximum call stack size exceeded
at Object.stringify (native)
解決策はありますか?