使用NPM ShellJS在Node中执行Git命令将在`stdout`中返回一个空字符串。

时间:2019-01-07 11:03:21

标签: javascript node.js git shelljs

我正在使用NPM ShellJS在Node脚本中执行以下Git命令:

git for-each-ref --sort=v:refname --format "tag: %(refname:strip=2) message: %(subject) date: %(authordate:iso)" refs/tags

如果我在正常的命令行窗口中运行此命令,它会完美运行并产生类似于以下的输出:

tag: v2.20.0-rc0 message: Git 2.20-rc0 date: 2018-11-18 18:25:38 +0900
tag: v2.20.0-rc1 message: Git 2.20-rc1 date: 2018-11-21 23:25:15 +0900
tag: v2.20.0-rc2 message: Git 2.20-rc2 date: 2018-12-01 21:45:08 +0900

但是,当我使用ShellJS在Node中运行此命令时,stdout的内容为空字符串:

const shell = require('shelljs');

let tagInfo = shell.exec(`
  git for-each-ref --sort=v:refname --format "tag: %(refname:strip=2) message: %(subject) date: %(authordate:iso)" refs/tags
`);

console.log('tagInfo', tagInfo.stdout); // empty string

如何获取指定的输出,而不是空字符串?

1 个答案:

答案 0 :(得分:1)

在您的情况下,您使用的是多行字符串-不太正确。 尝试提供一个字符串(在一行中):

let tagInfo = shell.exec(`git for-each-ref --sort=v:refname --format "tag: %(refname:strip=2) message: %(subject) date: %(authordate:iso)" refs/tags`);