处理Node.js同步错误

处理Node.js同步错误,node.js,npm,gulp,spawn,Node.js,Npm,Gulp,Spawn,我正在尝试从一个吞咽任务运行“npm发布”。它可以工作,但我想处理npm命令本身抛出的任何错误 如果我执行此代码: var cmd = spawnSync('npm.cmd', ['publish', packageDir], { stdio: 'inherit' }) cmd.stdout和cmd.stderr为空。如果我执行 var cmd = spawnSync('npm.cmd', ['publish', packageDir], { stdio: 'pipe' }) cmd.std

我正在尝试从一个吞咽任务运行“npm发布”。它可以工作,但我想处理npm命令本身抛出的任何错误

如果我执行此代码:

var cmd = spawnSync('npm.cmd', ['publish', packageDir], { stdio: 'inherit' })
cmd.stdoutcmd.stderr为空。如果我执行

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

cmd.stdoutcmd.stderr是缓冲区,就像节点文档中关于
选项的
一样

默认情况下,子项的stdin、stdout和stderr被重定向到 对应的subprocess.stdin、subprocess.stdout和 subprocess.stderr

在你的选择中使用

{ stdio: ['inherit', 'inherit', 'pipe'] }
然后检查是否有
stderr
。例如:

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

if (spawn.stderr) {
  console.log(Error(spawn.stderr))
  process.exitCode = 1;
}

如果我这样做
cmd.stderr.toString()。请在粘贴副本之前查看此选项