How to invoke external scripts/programs from node.js

Posted on

Question :

How to invoke external scripts/programs from node.js

I have a C++ program and a Python script that I want to incorporate into my node.js web app.

I want to use them to parse the files that are uploaded to my site; it may take a few seconds to process, so I would avoid to block the app as well.

How can I just accept the file then just run the C++ program and script in a sub-process from a node.js controller?

Asked By: alh


Answer #1:

see child_process. here is an example using spawn, which allows you to write to stdin and read from stderr/stdout as data is output. If you have no need to write to stdin and you can handle all output when the process completes, child_process.exec offers a slightly shorter syntax to execute a command.

// with express 3.x
var express = require('express'); 
var app = express();
app.use(app.router);'/upload', function(req, res){
     var python = require('child_process').spawn(
     // second argument is array of parameters, e.g.:
     , req.files.myUpload.path
     , req.files.myUpload.type]
     var output = "";
     python.stdout.on('data', function(data){ output += data });
     python.on('close', function(code){ 
       if (code !== 0) {  
           return res.send(500, code); 
       return res.send(200, output);
   } else { res.send(500, 'No file found') }

require('http').createServer(app).listen(3000, function(){
  console.log('Listening on 3000');
Answered By: Plato

Answer #2:

Might be a old question but some of these references will provide more details and different ways of including python in NodeJS.

There are multiple ways of doing this.

  • first way is by doing npm install python-shell

and here’s the code

var PythonShell = require('python-shell');
//you can use error handling to see if there are any errors'', options, function (err, results) { 
//your code

you can send a message to python shell using

you can find the API reference here-

a few more references –

if you want to use service-oriented architecture –

Answered By: Tejus Prasad

Leave a Reply

Your email address will not be published. Required fields are marked *