Spawn on Node JS (Windows Server 2012)

fire picture fire · Aug 20, 2013 · Viewed 13.6k times · Source

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

Andy picture Andy · Jan 27, 2014

As badsyntax pointed out, ls doesn't exist on windows as long as you didn't create an alias. You will use 'dir'. The difference is dir is not a program, but a command in windows shell (which is cmd.exe), So you would need to run 'cmd' with arguments to run dir and output the stream.

var spawn = require('child_process').spawn
spawn('cmd', ['/c', 'dir'], { stdio: 'inherit'})

By using 'inherit', the output will be piped to the current process.