我正在构建一个小工具,除此之外我还可以启动一个Tomcat服务器。
非常简单,我只需要一个按钮即可启动startup.bat
,另一个按钮可以调用shutdown.bat
。
它工作得很好(服务器启动和停止)但完全处于忍者模式,我无法通过日志获得Tomcat控制台。
如果我调用startup.bat
,则从经典命令行打开一个窗口,其中包含日志。
我尝试了exec
,execFile
,spawn
。我尝试直接致电bat
,cmd.exe
,甚至试过start
。但我无法得到窗口。
我知道我可以得到溪流,但我不想打扰它。
此外,我只是在Windows上使用该工具,暂时不需要考虑其他平台。
const ipc = require('electron').ipcMain;
const execFile = require('child_process').execFile;
ipc.on('start-local-tomcat', function (event) {
execFile('cmd.exe', ['D:\\DEV\\apache-tomcat-8.0.12\\bin\\startup.bat'],
{env: {'CATALINA_HOME': 'D:\\DEV\\apache-tomcat-8.0.12'}},
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
})
});
ipc.on('stop-local-tomcat', function (event) {
execFile('cmd.exe',['D:\\DEV\\apache-tomcat-8.0.12\\bin\\shutdown.bat'],
{env: {'CATALINA_HOME': 'D:\\DEV\\apache-tomcat-8.0.12'}},
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
})
});
答案 0 :(得分:0)
最后,我还没有充分阅读文档,有一个名为detached
的参数可以完全符合我的要求:
var child = spawn(
'D:\\DEV\\apache-tomcat-8.0.12\\bin\\startup.bat',
{
env: {'CATALINA_HOME': 'D:\\DEV\\apache-tomcat-8.0.12'},
detached: true
}
);