0

次の関数を呼び出して配列オブジェクトをファイルに書き込むと、通常のサイズの配列で適切に動作します

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)

解決策はありますか?

4

1 に答える 1