web-dev-qa-db-fra.com

Exécutez le script Shell avec node.js (childProcess)

Je veux exécuter un script Shell sur mon serveur node.js, mais rien ne s'est passé ...

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

Un autre childProcess fonctionne parfaitement, mais pas le processus ci-dessus.

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

Si j'exécute le script dans le terminal, cela fonctionne. Des idées? (chmod + x est défini)

34
Ralf

Le rappel de la fonction exec contient des arguments error, stdout et stderr. Voyez s'ils peuvent vous aider à diagnostiquer le problème en les répartissant sur la 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);
    }
});
58
smokey.edgy
exec('sh ~/play.sh /media/external/' + req.params.movie ,function(err,stdout,stderr){
      console.log(err,stdout,stderr);
 })

Exécute votre play.sh shellscript avec /media/external/ + req.params.movie comme argument. La sortie est disponible via stdout, variables stderr dans le rappel.

OU ESSAYEZ CECI

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