From 040a4b38654feb62603af3864335b3fbaf82c305 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Thu, 5 Jan 2023 20:03:35 +0800 Subject: [PATCH] :recycle: https://github.com/siyuan-note/siyuan/issues/4567 --- app/electron/main.js | 49 ++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/app/electron/main.js b/app/electron/main.js index 19bc4230d..4b0e35016 100644 --- a/app/electron/main.js +++ b/app/electron/main.js @@ -53,8 +53,10 @@ try { } } catch (e) { console.error(e) - require('electron').dialog.showErrorBox('创建配置目录失败 Failed to create config directory', - '思源需要在用户家目录下创建配置文件夹(~/.config/siyuan),请确保该路径具有写入权限。\n\nSiYuan needs to create a configuration folder (~/.config/siyuan) in the user\'s home directory. Please make sure that the path has write permissions.') + require('electron'). + dialog. + showErrorBox('创建配置目录失败 Failed to create config directory', + '思源需要在用户家目录下创建配置文件夹(~/.config/siyuan),请确保该路径具有写入权限。\n\nSiYuan needs to create a configuration folder (~/.config/siyuan) in the user\'s home directory. Please make sure that the path has write permissions.') app.exit() } @@ -382,31 +384,33 @@ const initKernel = (workspace, lang) => { resolve(false) return } - // 改进桌面端拉起内核 https://github.com/siyuan-note/siyuan/issues/6894 - const getAvailablePort = (port) => { - // https://gist.github.com/mikeal/1840641 - let tryGetPortCount = 0 - const server = net.createServer() - return new Promise((resolve, reject) => server.on('error', error => { - writeLog(error) - if (2048 < ++tryGetPortCount) { - writeLog('failed to get available port [tryCount=' + tryGetPortCount + - ', port=' + port + ']') - reject() - return - } - server.listen(++port) - }).on('listening', () => { - writeLog('got kernel port [' + port + ']') - server.close(() => resolve(port)) - }).listen(port, '127.0.0.1')) - } // TODO if (!isDevEnv) { writeLog('got kernel port [' + kernelPort + ']') } else { + const getAvailablePort = (port) => { + if (!port) { + port = 6806 + } + // https://gist.github.com/mikeal/1840641 + let tryGetPortCount = 0 + const server = net.createServer() + return new Promise((resolve, reject) => server.on('error', error => { + writeLog(error) + if (2048 < ++tryGetPortCount) { + writeLog( + `failed to get available port [tryCount=${tryGetPortCount}, port=${port}]`) + reject() + return + } + server.listen(++port, '127.0.0.1') + }).on('listening', () => { + server.close(() => resolve(port)) + }).listen(port, '127.0.0.1')) + } kernelPort = await getAvailablePort(kernelPort) } + writeLog('got kernel port [' + kernelPort + ']') if (!kernelPort) { bootWindow.destroy() resolve(false) @@ -434,7 +438,8 @@ const initKernel = (workspace, lang) => { }, ) kernelProcessPid = kernelProcess.pid - writeLog('booted kernel process [pid=' + kernelProcessPid + ', port=' + kernelPort + ']') + writeLog('booted kernel process [pid=' + kernelProcessPid + ', port=' + + kernelPort + ']') kernelProcess.on('close', (code) => { writeLog(