NodeJS Spawn不会触发参数

时间:2014-02-22 16:41:13

标签: node.js npm spawn

我正在构建一个使用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转储,其中包含使用信息,就好像它没有读取参数一样

1 个答案:

答案 0 :(得分:4)

你正在将你的类型混淆为@maxorq建议。您想要一个只包含字符串的数组。你是嵌套数组。试试这个:

  proc = spawn(command, args.concat( "--color", "always"), {
    cwd: buildDir
  });