Estou tentando executar o curl usando o nó child_process para obter um arquivo JSON (cerca de 220Ko) de uma pasta compartilhada em uma rede local. Mas na verdade retorna um problema de buffer que não consigo resolver. Aqui está o meu código:
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);
})
E aqui está o erro que recebo:
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)
fonte
curl --digest http://login:password@" + ip + "/webdav/file.json
Eu tive um problema semelhante e corrigi-lo ao passar de executivo para spawn:
fonte
process.exec
for usado em coisas como ferramentas CLI, então sim, mudar paraspawn
deve ser o caminho a percorrer.