当前位置 : 主页 > 网页制作 > Nodejs >

处理Node.js spawnSync错误

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正试图从gulp任务中运行“npm publish”.它工作,但我想处理npm命令本身抛出的任何错误. 如果我执行此代码: var cmd = spawnSync('npm.cmd', ['publish', packageDir], { stdio: 'inherit' }) cmd.stdout和cmd.st
我正试图从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的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)
}
网友评论