为什么当我使用 "require" 时我的变量未定义?

Why is my variable undefined when I use "require"?

我这里有一个简单的函数来获取 git ID(仅用于测试目的)。从上到下评估变量时,我不明白如何设置变量。它给我未定义。

var gitID;
require ('child_process').exec ('git rev-parse HEAD', function (err, stdout) {
  gitID = stdout;
});
console.log (gitID);

如何将我的 js 文件顶部的变量设置为 git ID?

如前所述,这是因为您正在进行的调用是使用回调的异步调用,并且 console.log(gitID)exec 操作能够完成之前完成并且 return 输出,因此它是 undefined.

解决此问题的一种快速简单的方法是使用 promisify 实用程序将 exec 包装在:

import { exec } from "child_process";
import { promisify } from "util";

const promisifiedExec = promisify(exec);

promisifiedExec("git rev-parse HEAD").then(res => console.log(res.stdout));

您还可以查看为 return promise 构造一个函数,相关问题中有很多相关信息。