ローカル ネットワークの共有フォルダーから 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
。ドキュメンテーション:
maxBuffer
stdout または stderr で許可されるデータの最大量を指定します。この値を超えると、子プロセスは強制終了されます。
ドキュメントには、 のデフォルト値はmaxBuffer
200 KB であるとも記載されています。
たとえば、次のコードでは最大バッファ サイズが 500 KB に増加されます。
var execute = function(command, callback){
exec(command, {maxBuffer: 1024 * 500}, function(error, stdout, stderr){ callback(error, stdout); });
};
さらに、以下もお読みくださいhttp.get
あなたがやろうとしていることを達成できるかどうかを確認します。