@oleg_templ
турист автостопщик - по ночам веб разработчик.

Как сделать вызов shell команды для вызова исполняемого js файла c передачей аргументов из другого js (нужно для тестирования cli интерфейса)?

Ест файл go.js, передачу аргументов отлавливает commander.js
const program = require('commander');
program
  .version('0.0.1', '-v, --version')
  .option('-l, --lol ', console.log('Hello my friend!'))
  .parse(process.argv);


Есть файл spec.js для тестов, в нем вызываем на исполнение файл go.js, но что-то явно идет не по плану.
function run_cmd(cmd, args, callBack ) {
    const spawn = require('child_process').spawn;
    const child = spawn(cmd, args);
    const resp = "";
    child.stdout.on('data', function (buffer) { resp += buffer.toString() });
    child.stdout.on('end', function() { callBack (resp) });
};

run_cmd( "./go.js", ["-l"], function(text) { console.log (text) })


Подскажите решение поблемы вызова файла
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
Negezor
@Negezor
Senior Shaurma Developer
const { spawn } = require('child_process');

function run_cmd(cmd, args, callBack) {
    const child = spawn(cmd, args);

    let resp = "";
    child.stdout.on('data', function (buffer) { resp += buffer.toString() });
    child.stdout.on('end', function() { callBack (resp) });
    child.stdout.on('error', callBack);
};

run_cmd("./go.js", ["-l"], function(err, text) {
   if (err) return console.error(err);

   console.log(text)
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы