Comment exécuter un programme externe à partir d'un noeud.js?

est-il possible d'exécuter un programme externe à partir d'un noeud.js? Y a-t-il un équivalent à os.system() de Python ou une bibliothèque qui ajoute cette fonctionnalité?

113
demandé sur jww 2011-04-25 08:11:07

4 réponses

var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
    // result
});
113
répondu Mark Kahn 2016-11-02 18:39:09

exec a une limite de mémoire de 512K. Dans ce cas, il est préférable d'utiliser spawn. Avec spawn on a accès à stdout de la commande exécutée à 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);
});
62
répondu Misha Kobrin 2014-01-03 16:50:25

la manière la plus simple est:

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

UNF est nécessaire pour mettre fin à votre processus sans attendre "yourApp"

Voici l'exec docs

12
répondu zag2art 2017-04-21 05:57:04

du noeud.js documentation:

Node fournit un popen tri-directionnel(3) installation par le biais de la classe ChildProcess.

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

2
répondu Michelle Tilley 2011-04-25 04:15:55