fire fire - 1 month ago 14
Node.js Question

Spawn on Node JS (Windows Server 2012)

When I run this through Node:

var spawn = require('child_process').spawn;

ls = spawn('ls', ['C:\\Users']);

ls.on('error', function (err) {
console.log('ls error', err);
});

ls.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});

ls.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});

ls.on('close', function (code) {
console.log('child process exited with code ' + code);
});


I get the following error:

ls error { [Error: spawn ENOENT] code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn' }
child process exited with code -1


On Windows Server 2012. Any ideas?

Answer

(Firstly, does ls actually exist on windows?)

I had a similar issue spawning child processes a little while back and it took me ages to figure out the correct way of doing it.

Here's some example code:

var spawn = require('child_process').spawn;
var cp = spawn(process.env.comspec, ['/c', 'command', '-arg1', '-arg2']);

cp.stdout.on("data", function(data) {
    console.log(data.toString());
});

cp.stderr.on("data", function(data) {
    console.error(data.toString());
});

Have a look at this ticket for an explanation of the issue: https://github.com/joyent/node/issues/2318