我正在构建一个使用spawn
运行命令的系统,该命令由从文件读入的数组指定。当我使用测试命令(例如echo Something
)时,一切正常,但是当我设置命令npm install express -save
时,如果输入stdout
而没有任何参数,则npm
就是你得到的
这里是处理命令的代码:
var runProcess = function (process, buildDir, callback) {
console.log('Running command: ' + process);
var args = process.split(" ");
var command = args[0];
var proc;
var stdout;
var stderr;
// Set arguments by shifting array
args.shift();
// Spawn the command
if (args.length) {
if (command === 'npm') {
proc = spawn(command, [args, "--color", "always"], {
cwd: buildDir
});
} else {
proc = spawn(command, [args], {
cwd: buildDir
});
}
} else {
proc = spawn(command, [], {
cwd: buildDir
});
}
}
如果我console.log
在任何时候检查它是否正确地进入正确的位置,但输出始终只是npm commands
转储,其中包含使用信息,就好像它没有读取参数一样
答案 0 :(得分:4)
你正在将你的类型混淆为@maxorq建议。您想要一个只包含字符串的数组。你是嵌套数组。试试这个:
proc = spawn(command, args.concat( "--color", "always"), {
cwd: buildDir
});