处理Node.js同步错误
我正在尝试从一个吞咽任务运行“npm发布”。它可以工作,但我想处理npm命令本身抛出的任何错误 如果我执行此代码:处理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
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是缓冲区,就像节点文档中关于
选项的一样
默认情况下,子项的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()。请在粘贴副本之前查看此选项