diff --git a/app/electron/main.js b/app/electron/main.js index a793a07ba..2b44de29b 100644 --- a/app/electron/main.js +++ b/app/electron/main.js @@ -388,34 +388,22 @@ const initKernel = (workspace, lang) => { if (!isDevEnv) { writeLog('got kernel port [' + kernelPort + ']') } else { - const getAvailablePort = (port) => { - if (!port) { - port = 6806 - } + const getAvailablePort = () => { // https://gist.github.com/mikeal/1840641 - return new Promise((resolve, reject) => { - let tryGetPortCount = 0 + return new Promise((portResolve, portReject) => { const server = net.createServer() server.on('error', error => { writeLog(error) - if (2048 < ++tryGetPortCount) { - writeLog( - `failed to get available port [tryCount=${tryGetPortCount}, port=${port}]`) - reject() - return - } - console.log("getAvailablePort error", port) - server.listen(++port, "127.0.0.1") - }).on('listening', () => { - console.log("getAvailablePort listening", port) - server.close(() => resolve(port)) - }).listen(port, "127.0.0.1") - console.log("getAvailablePort", port) + kernelPort = "" + portReject() + }) + server.listen(0, () => { + kernelPort = server.address().port + server.close(() => portResolve(kernelPort)) + }); }) } - console.log("before", kernelPort) - kernelPort = await getAvailablePort(kernelPort) - console.log("after", kernelPort) + await getAvailablePort() } writeLog('got kernel port [' + kernelPort + ']') if (!kernelPort) {