¿Es posible ejecutar un programa externo desde node.js? ¿Hay un equivalente a Python os.system()
o alguna biblioteca que agregue esta funcionalidad?
¿Es posible ejecutar un programa externo desde node.js? ¿Hay un equivalente a Python os.system()
o alguna biblioteca que agregue esta funcionalidad?
Respuestas:
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
// result
});
exec tiene una limitación de memoria del tamaño del búfer de 512k. En este caso, es mejor usar spawn. Con spawn uno tiene acceso a stdout del comando ejecutado en tiempo de ejecución
var spawn = require('child_process').spawn;
var prc = spawn('java', ['-jar', '-Xmx512M', '-Dfile.encoding=utf8', 'script/importlistings.jar']);
//noinspection JSUnresolvedFunction
prc.stdout.setEncoding('utf8');
prc.stdout.on('data', function (data) {
var str = data.toString()
var lines = str.split(/(\r?\n)/g);
console.log(lines.join(""));
});
prc.on('close', function (code) {
console.log('process exit code ' + code);
});
stderr
lugar de stdout
. En mi caso, aunque close
nunca llegará ...
La forma más simple es:
const {exec} = require("child_process")
exec('yourApp').unref()
Unref es necesario para finalizar su proceso sin esperar "yourApp"
Aquí están los documentos ejecutivos
De la documentación de Node.js:
El nodo proporciona una instalación de popen tridireccional (3) a través de la clase ChildProcess.
child_process
módulo. Consulte la documentación , que proporciona varios ejemplos claros de varios casos de uso.