我试图运行" 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...
我在这里缺少什么?
答案 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)
}