我正试图从gulp任务中运行“npm publish”。它工作,但我想处理npm命令本身抛出的任何错误。
如果我执行此代码:
var cmd = spawnSync('npm.cmd', ['publish', packageDir], { stdio: 'inherit' })
cmd.stdout和cmd.stderr为null。如果我执行
var cmd = spawnSync('npm.cmd', ['publish', packageDir], { stdio: 'pipe' })
cmd.stdout和cmd.stderr是缓冲区,如<Buffer 6e 70 6d 20 45 52...
我在这里错过了什么?
在关于options.stdio
的节点文档中,它说
默认情况下,子节点的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;
}