首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当其中一个参数中包含空格时,nodeJS child_process.spawn将不起作用

当其中一个参数中包含空格时,nodeJS child_process.spawn将不起作用
EN

Stack Overflow用户
提问于 2012-06-08 08:08:57
回答 1查看 23K关注 0票数 15

我正在尝试使用child_process.spawn函数。语法是

代码语言:javascript
复制
child_process.spawn(command, args=[], [options])

只要我在args数组的任何元素中包含一个空格,该命令就会简单地发出参数。下面是我用来测试它的一些代码

代码语言:javascript
复制
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());
});

这是node中的bug吗?我需要逃离这个空间吗?

编辑:上面的代码只是一个例子。这是真正的代码。也许和管子有关?

代码语言:javascript
复制
watcher = spawn("supervisor", ["--extensions\ 'coffee|js|css|coffeekup'", "src/app.coffee"]);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-05 14:23:27

不要在args中放空格,只需在数组中使用另一个参数

代码语言:javascript
复制
var watcher = spawn("supervisor", [
  "--extensions",
  "'coffee|js|css|coffeekup'",
  "src/app.coffee"
]);

如果您想从子进程中快速获得诊断输出,我找到了一个很方便的快捷方式:在options中传递{stdio: "inherit"}

代码语言:javascript
复制
var watcher = spawn("supervisor", [
  "--extensions",
  "'coffee|js|css|coffeekup'",
  "src/app.coffee"
], {stdio: "inherit"});

通过这种方式,您可以立即查看一切是否正常工作。

最后,根据supervisor的安装位置,您可能需要考虑使用完整路径。

代码语言:javascript
复制
var watcher = spawn("/path/to/supervisor", ...);
票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10941545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档