Run shell script with node.js (childProcess)

63,252

Solution 1

The exec function callback has error, stdout and stderr arguments passed to it. See if they can help you diagnose the problem by spitting them out to the 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);
    }
});

Solution 2

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

Runs your play.sh shellscript with /media/external/+req.params.movie as argument. The output is available through stdout,stderr variables in the callback.

OR TRY THIS

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
});`
Share:
63,252
Ralf
Author by

Ralf

Updated on October 28, 2020

Comments

  • Ralf
    Ralf over 3 years

    I want to run a shell script on my node.js server, but nothing happened...

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

    Another childProcess works perfect, but the process above won't.

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

    If I run the script in terminal, then it works. Any ideas? (chmod +x is set)