stdout/stderr 无法从 Yeoman/Node 使用 spawnCommand

stdout/stderr not available from Yeoman/Node with spawnCommand

出于某种原因,我无法从 Yeoman 的 this.spawnCommandspawnCommandSync 方法中获取以下输出:

const result = this.spawnCommandSync(
  "git",
  ["checkout", "-b", branchName],
  {
    cwd: this.destinationRoot(folderName),
    shell: true
  }
);

console.log(result);

result 的输出显示所有流都为空,即使我故意做错事情让 git 抛出 "fatal" 响应:

 { status: 128,
  signal: null,
  output: [ null, null, null ],
  pid: 36926,
  stdout: null,
  stderr: null,
  error: null }

我的理解是,当用户尝试执行某些操作(例如,克隆一个不存在的存储库)时,上面的内容应该捕获 git 抛出的 "fatal" 错误消息。

我正在尝试收集这些信息,这样我就可以摆脱我的 Yeoman 生成器。

如何使用 Yeoman 执行此操作?他们关于 spawnCommand 和 spawnCommandSync 的文档显示不多,我知道它们只是 spawn/spawn sync 的包装器,这让我更困惑为什么上面的内容不适用于 git 命令。据我所知,如果我不指定任何 stdio 选项,我应该在 parent/child 之间设置管道。我错过了什么吗?

谢谢!

我通过在选项中添加以下内容解决了这个问题:

stdio: [process.stderr]