Esegui lo script della shell con node.js (childProcess)

Voglio eseguire uno script di shell sul mio server node.js, ma non è successo nulla …

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

Un altro childProcess funziona perfettamente, ma il processo di cui sopra non lo farà.

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

Se eseguo lo script nel terminale, allora funziona. Qualche idea? (è impostato chmod + x)

La callback della funzione exec ha degli errori, gli argomenti stdout e stderr passati ad esso. Verifica se possono aiutarti a diagnosticare il problema sputandoli alla console:

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

Esegue il tuo play.sh play.sh con /media/external/ + req.params.movie come argomento. L’output è disponibile attraverso le variabili stdout, stderr nel callback.

O PROVATE QUESTO

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