Как выполнить внешнюю программу из Node.js?
Можно ли выполнить внешнюю программу из node.js? Есть ли эквивалент Python os.system()
или любая библиотека, которая добавляет эту функциональность?
5 ответов
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
// result
});
exec имеет ограничение памяти для размера буфера 512k. В этом случае лучше использовать spawn. С помощью 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);
});
Самый простой способ это:
const exec = require("child_process").exec
exec('yourApp').unref()
unref необходимо завершить ваш процесс, не дожидаясь "yourApp"
Вот исполнительные документы
Из документации Node.js:
Узел предоставляет трехстороннюю функцию popen(3) через класс ChildProcess.
Использование операторов импорта с утилитами обещает:
import { exec } from 'child_process';
import utils from 'util';
const execute = utils.promisify(exec);
console.log(await execute('pwd'));