web-dev-qa-db-fra.com

Comment exécuter un programme externe à partir de Node.js?

Est-il possible d'exécuter un programme externe à partir de node.js? Existe-t-il un équivalent de la fonction os.system() de Python ou de n'importe quelle bibliothèque ajoutant cette fonctionnalité?

130
Michael Bylstra
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
    // result
});
130
Mark Kahn

exec a une limite de mémoire de 512 Ko. Dans ce cas, il est préférable d'utiliser spawn. Avec spawn, on a accès à stdout de la commande exécutée au moment de l'exécution

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);
});
70
MKK

Le moyen le plus simple est:

const {exec} = require("child_process")
exec('yourApp').unref()

unref est nécessaire pour terminer votre processus sans attendre "yourApp"

Voici les exec docs

15
zag2art

De la documentation Node.js:

Node fournit une fonctionnalité popen (3) tridirectionnelle via la classe ChildProcess.

Voir http://nodejs.org/docs/v0.4.6/api/child_processes.html

4
Michelle Tilley