Возможно ли выполнить внешнюю программу из node.js?

Возможно ли выполнить внешнюю программу из node.js? Есть ли эквивалент Python os.system() или любой библиотеки, которая добавляет эту функциональность?

Ответ 1

Вы хотите использовать модуль child_process. См. документацию, которая содержит несколько ясных примеров различных вариантов использования.

Ответ 2

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

Ответ 3

exec имеет ограничение памяти в размере буфера 512k. В этом случае лучше использовать икру. С помощью spawn у вас есть доступ к команде исполняемой команды во время выполнения

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

Ответ 4

Самый простой способ:

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

unref необходимо для завершения вашего процесса, не дожидаясь "yourApp"

Вот exec docs