refactor: 注释掉杀死后端的函数,改为由后端自杀
This commit is contained in:
@@ -20,7 +20,6 @@ import {
|
|||||||
installPipPackage,
|
installPipPackage,
|
||||||
installDependencies,
|
installDependencies,
|
||||||
startBackend,
|
startBackend,
|
||||||
stopBackend,
|
|
||||||
} from './services/pythonService'
|
} from './services/pythonService'
|
||||||
import { setMainWindow as setGitMainWindow, downloadGit, cloneBackend } from './services/gitService'
|
import { setMainWindow as setGitMainWindow, downloadGit, cloneBackend } from './services/gitService'
|
||||||
import { setupLogger, log, getLogPath, getLogFiles, cleanOldLogs } from './services/logService'
|
import { setupLogger, log, getLogPath, getLogFiles, cleanOldLogs } from './services/logService'
|
||||||
@@ -628,9 +627,9 @@ ipcMain.handle('start-backend', async () => {
|
|||||||
return startBackend(appRoot)
|
return startBackend(appRoot)
|
||||||
})
|
})
|
||||||
|
|
||||||
ipcMain.handle('stop-backend', async () => {
|
// ipcMain.handle('stop-backend', async () => {
|
||||||
return stopBackend()
|
// return stopBackend()
|
||||||
})
|
// })
|
||||||
|
|
||||||
// Git相关
|
// Git相关
|
||||||
ipcMain.handle('download-git', async () => {
|
ipcMain.handle('download-git', async () => {
|
||||||
@@ -1015,16 +1014,16 @@ app.on('before-quit', async event => {
|
|||||||
// 清理托盘
|
// 清理托盘
|
||||||
destroyTray()
|
destroyTray()
|
||||||
|
|
||||||
try {
|
// try {
|
||||||
await stopBackend()
|
// await stopBackend()
|
||||||
log.info('后端服务已停止')
|
// log.info('后端服务已停止')
|
||||||
} catch (e) {
|
// } catch (e) {
|
||||||
log.error('停止后端时出错:', e)
|
// log.error('停止后端时出错:', e)
|
||||||
console.error('停止后端时出错:', e)
|
// console.error('停止后端时出错:', e)
|
||||||
} finally {
|
// } finally {
|
||||||
log.info('应用退出')
|
// log.info('应用退出')
|
||||||
app.exit(0)
|
// app.exit(0)
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -574,38 +574,38 @@ export async function startBackend(appRoot: string, timeoutMs = 30_000) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** 停止后端进程(如果没启动就直接返回成功) */
|
/** 停止后端进程(如果没启动就直接返回成功) */
|
||||||
export async function stopBackend() {
|
// export async function stopBackend() {
|
||||||
if (!backendProc || backendProc.killed) {
|
// if (!backendProc || backendProc.killed) {
|
||||||
console.log('[Backend] 未运行,无需停止')
|
// console.log('[Backend] 未运行,无需停止')
|
||||||
return { success: true }
|
// return { success: true }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
const pid = backendProc.pid
|
// const pid = backendProc.pid
|
||||||
console.log('[Backend] 正在停止后端服务, PID =', pid)
|
// console.log('[Backend] 正在停止后端服务, PID =', pid)
|
||||||
|
//
|
||||||
return new Promise<{ success: boolean; error?: string }>(resolve => {
|
// return new Promise<{ success: boolean; error?: string }>(resolve => {
|
||||||
// 清监听,避免重复日志
|
// // 清监听,避免重复日志
|
||||||
backendProc?.stdout?.removeAllListeners('data')
|
// backendProc?.stdout?.removeAllListeners('data')
|
||||||
backendProc?.stderr?.removeAllListeners('data')
|
// backendProc?.stderr?.removeAllListeners('data')
|
||||||
|
//
|
||||||
backendProc!.once('exit', (code, signal) => {
|
// backendProc!.once('exit', (code, signal) => {
|
||||||
console.log('[Backend] 已退出', { code, signal })
|
// console.log('[Backend] 已退出', { code, signal })
|
||||||
backendProc = null
|
// backendProc = null
|
||||||
resolve({ success: true })
|
// resolve({ success: true })
|
||||||
})
|
// })
|
||||||
|
//
|
||||||
backendProc!.once('error', err => {
|
// backendProc!.once('error', err => {
|
||||||
console.error('[Backend] 停止时出错:', err)
|
// console.error('[Backend] 停止时出错:', err)
|
||||||
backendProc = null
|
// backendProc = null
|
||||||
resolve({ success: false, error: err instanceof Error ? err.message : String(err) })
|
// resolve({ success: false, error: err instanceof Error ? err.message : String(err) })
|
||||||
})
|
// })
|
||||||
|
//
|
||||||
try {
|
// try {
|
||||||
backendProc!.kill() // 默认 SIGTERM,Windows 下等价于结束进程
|
// backendProc!.kill() // 默认 SIGTERM,Windows 下等价于结束进程
|
||||||
} catch (e) {
|
// } catch (e) {
|
||||||
console.error('[Backend] kill 调用失败:', e)
|
// console.error('[Backend] kill 调用失败:', e)
|
||||||
backendProc = null
|
// backendProc = null
|
||||||
resolve({ success: false, error: e instanceof Error ? e.message : String(e) })
|
// resolve({ success: false, error: e instanceof Error ? e.message : String(e) })
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
}
|
// }
|
||||||
|
|||||||
@@ -125,9 +125,19 @@ const toggleMaximize = async () => {
|
|||||||
|
|
||||||
const closeWindow = async () => {
|
const closeWindow = async () => {
|
||||||
try {
|
try {
|
||||||
|
// 先调用后端关闭API
|
||||||
|
await Service.closeApiCoreClosePost()
|
||||||
|
console.log('Backend close API called successfully')
|
||||||
|
// 然后关闭窗口
|
||||||
await window.electronAPI?.windowClose()
|
await window.electronAPI?.windowClose()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to close window:', error)
|
console.error('Failed to close window:', error)
|
||||||
|
// 即使API调用失败,也尝试关闭窗口
|
||||||
|
try {
|
||||||
|
await window.electronAPI?.windowClose()
|
||||||
|
} catch (closeError) {
|
||||||
|
console.error('Failed to close window after API error:', closeError)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user