From e466f5cd618f4460354ff0d636899f06bbb759a0 Mon Sep 17 00:00:00 2001 From: saopig1 Date: Mon, 30 Mar 2026 21:13:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20NetEase=20API=E7=AB=AF=E5=8F=A3=E5=86=B2?= =?UTF-8?q?=E7=AA=81=E6=A3=80=E6=9F=A5=EF=BC=8CSettings=E9=A1=B5=E9=9D=A2c?= =?UTF-8?q?reate-bot=E6=A0=B7=E5=BC=8F=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - NetEase API启动前检查端口是否被占用(与QQ API相同逻辑) - 添加.create-bot CSS(分隔线+间距) - 防止EADDRINUSE崩溃 Co-Authored-By: Claude Opus 4.6 (1M context) --- src/music/api-server.ts | 24 ++++++++++++++++-------- web/src/views/Settings.vue | 6 ++++++ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/music/api-server.ts b/src/music/api-server.ts index 8a1f5cc..f517ea5 100644 --- a/src/music/api-server.ts +++ b/src/music/api-server.ts @@ -40,14 +40,22 @@ export function createApiServerManager( // Start NetEase Cloud Music API try { - const ncmModule = await import("NeteaseCloudMusicApi") as any; - const serverObj = ncmModule.server ?? ncmModule.default?.server; - const app = await serverObj.serveNcmApi({ port: options.neteasePort }); - neteaseServer = app; - logger.info( - { port: options.neteasePort }, - "NetEase Cloud Music API started" - ); + const portFree = await isPortFree(options.neteasePort); + if (!portFree) { + logger.info( + { port: options.neteasePort }, + "NetEase API port already in use — reusing existing instance" + ); + } else { + const ncmModule = await import("NeteaseCloudMusicApi") as any; + const serverObj = ncmModule.server ?? ncmModule.default?.server; + const app = await serverObj.serveNcmApi({ port: options.neteasePort }); + neteaseServer = app; + logger.info( + { port: options.neteasePort }, + "NetEase Cloud Music API started" + ); + } } catch (err) { logger.error({ err }, "Failed to start NetEase Cloud Music API"); } diff --git a/web/src/views/Settings.vue b/web/src/views/Settings.vue index f6759a1..475bffd 100644 --- a/web/src/views/Settings.vue +++ b/web/src/views/Settings.vue @@ -1001,6 +1001,12 @@ onUnmounted(() => { align-items: center; } +.create-bot { + margin-top: 20px; + padding-top: 16px; + border-top: 1px solid var(--border-color); +} + .form-group { margin-bottom: 12px; label {