处理Node.js spawnSync错误

时间:2016-10-20 08:35:14

标签: node.js npm gulp spawn

我试图运行" npm publish"从gulp任务。它有效,但我想处理npm命令本身抛出的任何错误。

如果我执行此代码:

var cmd = spawnSync('npm.cmd', ['publish', packageDir], { stdio: 'inherit' })

cmd.stdout cmd.stderr 为空。如果我执行

var cmd = spawnSync('npm.cmd', ['publish', packageDir], { stdio: 'pipe' })

cmd.stdout cmd.stderr 是缓冲区,例如<Buffer 6e 70 6d 20 45 52...

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

有关options.stdio的Node文档中

  

默认情况下,孩子的stdin,stdout和stderr重定向到   相应的subprocess.stdin,subprocess.stdout和   subprocess.stderr。

在您的选择中使用

{ stdio: ['inherit', 'inherit', 'pipe'] }

然后检查stderr。一个例子:

var spawn = childProcess.spawnSync('node script.js', { stdio: ['inherit', 'inherit', 'pipe'] })

if (spawn.stderr) {
  console.log(Error(spawn.stderr))
  process.exit(1)
}