当其中一个参数有一个空格时,nodeJS child_process.spawn不起作用
我正在尝试使用child_process.spawn
函数。 语法是
child_process.spawn(command, args=[], [options])
每当我在args数组的任何元素中包含一个空格时,该命令只是简单地发出参数。 这是我用来testing它的一些代码
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()); });
这是节点中的错误? 我需要逃离这个空间吗?
编辑:上面的代码只是一个例子。 这是真正的代码。 也许是与pipe道有关?
watcher = spawn("supervisor", ["--extensions\ 'coffee|js|css|coffeekup'", "src/app.coffee"]);
不要在args
放入空格,只需在数组中使用另一个参数即可
var watcher = spawn("supervisor", [ "--extensions", "'coffee|js|css|coffeekup'", "src/app.coffee" ]);
我发现一个方便的小捷径,如果你想从你的subprocess得到快速的诊断输出,在options
传递{stdio: "inherit"}
var watcher = spawn("supervisor", [ "--extensions", "'coffee|js|css|coffeekup'", "src/app.coffee" ], {stdio: "inherit"});
这样你就可以看到是否一切正常工作马上。
最后,取决于supervisor
的安装位置,您可能需要考虑使用完整path。
var watcher = spawn("/path/to/supervisor", ...);