Friday, May 10, 2024
 Popular · Latest · Hot · Upcoming
56
rated 0 times [  63] [ 7]  / answers: 1 / hits: 25363  / 12 Years ago, fri, june 8, 2012, 12:00:00

I am trying to use the child_process.spawn function. The syntax is



child_process.spawn(command, args=[], [options])


Whenever I include a space in any of the elements of the args array, the command simply emits the argument. Here is some code I used to test it



var spawn = require(child_process).spawn

console.log(This works);
var watcher = spawn(ls, [-l]);
watcher.stdout.on('data', function(data) {
process.stdout.write(data.toString());
});

console.log(This does not work);
watcher = spawn(ls, [-l, /path with space in it]);
watcher.stdout.on('data', function(data) {
process.stdout.write(data.toString());
});


Is this a bug in node? Do I need to escape the space?



Edit: The above code is just an example. Here is the real code.
Maybe is has to do with the pipes?



watcher = spawn(supervisor, [--extensions 'coffee|js|css|coffeekup', src/app.coffee]);

More From » node.js

 Answers
71

Don't put spaces in args, just use another argument in the array



var watcher = spawn(supervisor, [
--extensions,
'coffee|js|css|coffeekup',
src/app.coffee
]);


A handy little shortcut I found if you want to get quick diagnostic output from your child processes is passing the {stdio: inherit} in options



var watcher = spawn(supervisor, [
--extensions,
'coffee|js|css|coffeekup',
src/app.coffee
], {stdio: inherit});


This way you can see whether everything is working properly right away.



Lastly, depending on where supervisor is installed, you might want to consider using the full path.



var watcher = spawn(/path/to/supervisor, ...);

[#85068] Thursday, June 7, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
alyssiat

Total Points: 608
Total Questions: 102
Total Answers: 101

Location: Japan
Member since Sat, Jun 6, 2020
4 Years ago
;