ノードchild_processを使用したstdoutバッファの問題 質問する

ノードchild_processを使用したstdoutバッファの問題 質問する

ローカル ネットワークの共有フォルダーから JSON ファイル (約 220KB) を取得するために、node child_process を使用して curl を実行しようとしています。しかし、実際には、取得できないバッファの問題が返されます。これが私のコードです:

var exec = require('child_process').exec;

var execute = function(command, callback){
    exec(command, function(error, stdout, stderr){ callback(error, stdout); });
};

execute("curl http://" + ip + "/file.json", function(err, json, outerr) {
    if(err) throw err;
    console.log(json);
})

そして、次のようなエラーが発生します:

if(err) throw err;
          ^
Error: stdout maxBuffer exceeded.
    at Socket.<anonymous> (child_process.js:678:13)
    at Socket.EventEmitter.emit (events.js:95:17)
    at Socket.<anonymous> (_stream_readable.js:746:14)
    at Socket.EventEmitter.emit (events.js:92:17)
    at emitReadable_ (_stream_readable.js:408:10)
    at emitReadable (_stream_readable.js:404:5)
    at readableAddChunk (_stream_readable.js:165:9)
    at Socket.Readable.push (_stream_readable.js:127:10)
    at Pipe.onread (net.js:526:21)

ベストアンサー1

maxBufferを使用するときは、オプションを使用して設定する必要がありますchild_process.execドキュメンテーション:

maxBufferstdout または stderr で許可されるデータの最大量を指定します。この値を超えると、子プロセスは強制終了されます。

ドキュメントには、 のデフォルト値はmaxBuffer200 KB であるとも記載されています。

たとえば、次のコードでは最大バッファ サイズが 500 KB に増加されます。

var execute = function(command, callback){
    exec(command, {maxBuffer: 1024 * 500}, function(error, stdout, stderr){ callback(error, stdout); });
};

さらに、以下もお読みくださいhttp.getあなたがやろうとしていることを達成できるかどうかを確認します。

おすすめ記事