refactor: 注释掉杀死后端的函数,改为由后端自杀

This commit is contained in:
2025-09-23 23:39:17 +08:00
parent 6fd46087bb
commit 2331d7e38b
3 changed files with 58 additions and 49 deletions

View File

@@ -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)
} // }
} }
}) })

View File

@@ -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() // 默认 SIGTERMWindows 下等价于结束进程 // backendProc!.kill() // 默认 SIGTERMWindows 下等价于结束进程
} 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) })
} // }
}) // })
} // }

View File

@@ -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)
}
} }
} }