为什么当我使用 "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 构造一个函数,相关问题中有很多相关信息。
我这里有一个简单的函数来获取 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 构造一个函数,相关问题中有很多相关信息。