我正试图从gulp任务中运行“npm publish”.它工作,但我想处理npm命令本身抛出的任何错误. 如果我执行此代码: var cmd = spawnSync('npm.cmd', ['publish', packageDir], { stdio: 'inherit' }) cmd.stdout和cmd.st
如果我执行此代码:
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的Node文档中,它说By default, the child’s stdin, stdout, and stderr are redirected to
corresponding subprocess.stdin, subprocess.stdout, and
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) }