From 0b50d2767a1e8e5126d1cdaaa11f89e10cd42f42 Mon Sep 17 00:00:00 2001 From: geekgeekrun Date: Wed, 21 Jan 2026 01:07:11 +0800 Subject: [PATCH] fix ipc file cannot listen in linux --- packages/pm/daemon.js | 18 ++++++++++-------- .../OPEN_SETTING_WINDOW/connect-to-daemon.ts | 13 ++++--------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/packages/pm/daemon.js b/packages/pm/daemon.js index d4a54ef..e809dc2 100644 --- a/packages/pm/daemon.js +++ b/packages/pm/daemon.js @@ -44,14 +44,11 @@ if (process.platform === 'win32') { } else { ipcSocketPath = path.join(tmpdir(), `${ipcSocketName}.sock`) - if (!fs.existsSync(ipcSocketPath)) { + if (process.platform === 'darwin' && !fs.existsSync(ipcSocketPath)) { fs.writeFileSync(ipcSocketPath, '') + // 设置权限(Unix) + fs.chmodSync(ipcSocketPath, 0o777) } - // 设置权限(Unix) - fs.chmodSync( - ipcSocketPath, - 0o777 - ) } const workers = new Map(); // workerId -> { process, status, restartCount, socket, latestScreenshot, latestScreenshotAt } @@ -443,13 +440,18 @@ new Promise((resolve, reject) => { ) reject(err) }) - server.listen(ipcSocketPath, () => { + server.listen(ipcSocketPath, (err) => { console.log(`守护进程服务器运行在端口 ${ipcSocketPath}`); ipcWritePipe.write( JSON.stringify({ type: 'DAEMON_READY' }), (err) => void err ) - resolve(true) + if (!err) { + resolve(true) + } + else { + reject(err) + } }); }) diff --git a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/connect-to-daemon.ts b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/connect-to-daemon.ts index f2749a2..df994b0 100644 --- a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/connect-to-daemon.ts +++ b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/connect-to-daemon.ts @@ -18,18 +18,13 @@ export async function connectToDaemon() { let isConnected = false await new Promise((resolve, reject) => { const ipcSocketName = process.env.GEEKGEEKRUND_PIPE_NAME - const ipcSocketPath = process.platform === 'win32' + const ipcSocketPath = process.platform === 'win32' ? `\\\\.\\pipe\\${ipcSocketName}` : path.join(tmpdir(), `${ipcSocketName}.sock`) - if (process.platform !== 'win32' ) { - if (!fs.existsSync(ipcSocketPath)) { - fs.writeFileSync(ipcSocketPath, '') - } + if (process.platform === 'darwin' && !fs.existsSync(ipcSocketPath)) { + fs.writeFileSync(ipcSocketPath, '') // 设置权限(Unix) - fs.chmodSync( - ipcSocketPath, - 0o777 - ) + fs.chmodSync(ipcSocketPath, 0o777) } daemonClient.connect(ipcSocketPath, 'localhost', () => { isConnected = true