Запустите скрипт оболочки с помощью node.js (childProcess)

Я хочу запустить сценарий оболочки на моем сервере node.js, но ничего не произошло...

childProcess.exec('~/./play.sh /media/external/' + req.params.movie, function() {}); //not working

Другой childProcess работает отлично, но процесс выше не будет.

childProcess.exec('ls /media/external/', movieCallback); //works

Если я запускаю скрипт в терминале, то он работает. Есть идеи? (chmod +x установлен)

2 ответа

Решение

Обратный вызов функции exec имеет аргументы error, stdout и stderr. Посмотрите, могут ли они помочь вам диагностировать проблему, выплевывая их на консоль:

exec('~/./play.sh /media/external/' + req.params.movie,
  function (error, stdout, stderr) {
    console.log('stdout: ' + stdout);
    console.log('stderr: ' + stderr);
    if (error !== null) {
      console.log('exec error: ' + error);
    }
});
exec('sh ~/play.sh /media/external/' + req.params.movie ,function(err,stdout,stderr){
      console.log(err,stdout,stderr);
 })

Бежит твой play.sh шеллскрипт с /media/external/+req.params.movie в качестве аргумента. Вывод доступен через переменные stdout,stderr в обратном вызове.

ИЛИ ПОПРОБУЙТЕ ЭТО

var myscript = exec('sh ~/play.sh /media/external/' + req.params.movie);
myscript.stdout.on('data',function(data){
    console.log(data); // process output will be displayed here
});
myscript.stderr.on('data',function(data){
    console.log(data); // process error output will be displayed here
});`
Другие вопросы по тегам