终端上下文未在nodejs子进程中更新
terminal context not updating in nodejs child process
这个程序的一部分检查是否安装了 java 并继续每两秒检查一次,然后在安装后继续,我如何让它更新终端上下文以便能够执行 java 命令而不重新启动程序本身?
var javaCheckLoop = setInterval(function(){
checkJava(function(res){
if(res){
//java installed, continue
} else {
//java not found, keep checking
}
})
},2000)
function checkJava(callback) {
//need terminal context to update so it can detect java
var c = require('child_process').exec('java', (error, stdout, stderr) => {
callback(stderr.includes("Usage")); //returns true if java is available via cmd
});
};
虽然我确实找到了检测是否安装了 java 的方法,但我没有找到更新终端上下文的方法。我之前试图将 java 作为命令生成,但诀窍在于注册表,它实时更新并可用于检测是否已安装 java。
require('child_process').exec('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"', (error, data) => {
callback(String(data).includes("javapath")); //returns true if javapath is present in the environment variables
});
这个程序的一部分检查是否安装了 java 并继续每两秒检查一次,然后在安装后继续,我如何让它更新终端上下文以便能够执行 java 命令而不重新启动程序本身?
var javaCheckLoop = setInterval(function(){
checkJava(function(res){
if(res){
//java installed, continue
} else {
//java not found, keep checking
}
})
},2000)
function checkJava(callback) {
//need terminal context to update so it can detect java
var c = require('child_process').exec('java', (error, stdout, stderr) => {
callback(stderr.includes("Usage")); //returns true if java is available via cmd
});
};
虽然我确实找到了检测是否安装了 java 的方法,但我没有找到更新终端上下文的方法。我之前试图将 java 作为命令生成,但诀窍在于注册表,它实时更新并可用于检测是否已安装 java。
require('child_process').exec('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"', (error, data) => {
callback(String(data).includes("javapath")); //returns true if javapath is present in the environment variables
});