Andry
Andry

Reputation: 16895

Cannot access child_process API

I have the following tiny program.js which tries to execute a binary file:

var childProcess = require('child_process');

var path2Binary = '/home/myuser/myproj/bins/mybin';
var par = '--file=' + '/home/myuser/myproj/files/myfile.txt';

var ret = childProcess.execFileSync(path2Binary, [par]);
if (!ret) throw 'Error invoking process!';    
var cnt = ret.stdout;
if (!cnt) throw 'Error retrieving output!';

console.log(cnt);

The program tries to execute a binary file and passes it a parameter (a file). The output of this process will be then displayed.

I try to run this: node program.js, but get the following

var ret = childProcess.execFileSync(path2Binary, [par]);
                       ^
TypeError: Object #<Object> has no method 'execFileSync'
    at Object.<anonymous> (/home/myuser/myproj/program.js:6:24)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:929:3

More information

I am running on CentOS, Node version is v0.10.36.

I tried running sudo yum install nodejs, but it tells me it is already installed so Node installation looks kinda good.

What's the problem?

On a side note...

If I replace childProcess.execFileSync with childProcess.spawn I get the same.

If I change the first line into the following:

var exec = require('child_process').execFileSync;

Then I get an undefined exception on exec.

Upvotes: 0

Views: 674

Answers (1)

Vito
Vito

Reputation: 96

Synchronous child processes aren't supported in node v0.10.36 - https://nodejs.org/docs/v0.10.36/api/child_process.html

Looks like it may have been introduced in 0.12.

Upvotes: 2

Related Questions