后端服务启动判断
This commit is contained in:
@ -78,6 +78,8 @@ stopBatPath = process.platform === 'win32' ? stopBatPath.replace(/^(\w:)/, '/$1'
|
||||
let isRestart = false
|
||||
let mainWindow;
|
||||
|
||||
let isSeverInit = false
|
||||
let isAppInit = false
|
||||
function createWindow(): void {
|
||||
// Create the browser window.
|
||||
|
||||
@ -150,6 +152,10 @@ function createWindow(): void {
|
||||
// 监听启动页完成的消息
|
||||
ipcMain.on('splash-completed', () => {
|
||||
// 启动页进度条已完成,可以关闭启动页并显示主窗口
|
||||
if(isSeverInit) {
|
||||
mainWindow.webContents.send('program-init')
|
||||
}
|
||||
isAppInit = true
|
||||
setTimeout(() => {
|
||||
splashWindow.destroy()
|
||||
mainWindow.maximize() // 先最大化
|
||||
@ -562,38 +568,53 @@ if (!gotTheLock) {
|
||||
// buttons: ['确定']
|
||||
// })
|
||||
// 执行批处理文件
|
||||
exec(startBatPath.substring(1, 200), (error, stdout, stderr) => {
|
||||
if (error) {
|
||||
console.error(`执行错误: ${error.message}`);
|
||||
return;
|
||||
// exec(startBatPath.substring(1, 200), (error, stdout, stderr) => {
|
||||
// if (error) {
|
||||
// console.error(`执行错误: ${error.message}`);
|
||||
// return;
|
||||
// }
|
||||
// if (stderr) {
|
||||
// console.error(`错误输出: ${stderr}`);
|
||||
// return;
|
||||
// }
|
||||
// console.log(`批处理输出: ${stdout}`);
|
||||
// });
|
||||
|
||||
const batProcess = spawn('cmd.exe', ['/c', startBatPath.substring(1, 200)]);
|
||||
// 实时监听标准输出(stdout)
|
||||
batProcess.stdout.on('data', (data) => {
|
||||
// data 是 Buffer 类型,转为字符串后输出
|
||||
let string = data.toString().trim()
|
||||
// console.log(`批处理输出: ${string}`);
|
||||
// 临时处理:应用启动失败或项目文档地址出现时,认为服务初始化完成;后续需后端配合
|
||||
if(string.indexOf('APPLICATION FAILED TO START') !== -1 || string.indexOf('项目文档地址') !== -1) {
|
||||
if(!isSeverInit) {
|
||||
isSeverInit = true
|
||||
if(isAppInit) {
|
||||
mainWindow.webContents.send('program-init')
|
||||
}
|
||||
}
|
||||
}
|
||||
if (stderr) {
|
||||
console.error(`错误输出: ${stderr}`);
|
||||
return;
|
||||
}
|
||||
console.log(`批处理输出: ${stdout}`);
|
||||
});
|
||||
// const batProcess = spawn('cmd.exe', ['/c', startBatPath.substring(1, 200)]);
|
||||
// // 实时监听标准输出(stdout)
|
||||
// batProcess.stdout.on('data', (data) => {
|
||||
// // data 是 Buffer 类型,转为字符串后输出
|
||||
// console.log(`批处理输出: ${data.toString().trim()}`);
|
||||
// });
|
||||
|
||||
// // 监听错误输出(stderr)
|
||||
// batProcess.stderr.on('data', (data) => {
|
||||
// console.error(`错误输出: ${data.toString().trim()}`);
|
||||
// });
|
||||
ipcMain.on('judgment-isSeverInit', (event) => {
|
||||
event.returnValue = isSeverInit
|
||||
})
|
||||
|
||||
// // 监听进程执行出错(如文件不存在、权限问题等)
|
||||
// batProcess.on('error', (error) => {
|
||||
// console.error(`执行错误: ${error.message}`);
|
||||
// });
|
||||
// 监听错误输出(stderr)
|
||||
batProcess.stderr.on('data', () => {
|
||||
// console.error(`错误输出: ${data.toString().trim()}`);
|
||||
});
|
||||
|
||||
// // 监听进程退出事件(执行结束后触发)
|
||||
// batProcess.on('close', (code) => {
|
||||
// console.log(`批处理执行完毕,退出码: ${code}`);
|
||||
// });
|
||||
// 监听进程执行出错
|
||||
batProcess.on('error', () => {
|
||||
// console.error(`执行错误: ${error.message}`);
|
||||
});
|
||||
|
||||
// 监听进程退出事件(执行结束后触发)
|
||||
batProcess.on('close', (code) => {
|
||||
console.log(`批处理执行完毕,退出码: ${code}`);
|
||||
});
|
||||
// Set app user model id for windows
|
||||
electronApp.setAppUserModelId('com.electron')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user