From 59f71148af96a35b055b5bda87983a4a2c738e08 Mon Sep 17 00:00:00 2001 From: alger Date: Sun, 22 Mar 2026 22:46:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=89=93=E5=8C=85?= =?UTF-8?q?=E5=90=8E=E7=99=BD=E5=B1=8F=E9=97=AE=E9=A2=98=EF=BC=88createDis?= =?UTF-8?q?creteApi=20=E5=BE=AA=E7=8E=AF=E4=BE=9D=E8=B5=96=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit playlist.ts 被 Vite 拆分为独立 chunk 后与主 chunk 形成循环依赖, 顶层调用 createDiscreteApi 导致 NMessageProvider 组件 TDZ 错误。 改为延迟初始化解决。同时移除调试代码。 --- src/main/modules/window-size.ts | 1 - src/renderer/store/modules/playlist.ts | 17 +++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/modules/window-size.ts b/src/main/modules/window-size.ts index b4c1b0e..addb951 100644 --- a/src/main/modules/window-size.ts +++ b/src/main/modules/window-size.ts @@ -343,7 +343,6 @@ class WindowSizeManager { */ saveWindowState(win: BrowserWindow): WindowState { // 如果窗口已销毁,则返回之前的状态或默认状态 - console.log('win.isDestroyed()', win.isDestroyed()); if (win.isDestroyed()) { return ( this.savedState || { diff --git a/src/renderer/store/modules/playlist.ts b/src/renderer/store/modules/playlist.ts index fbdc5e3..c058ac2 100644 --- a/src/renderer/store/modules/playlist.ts +++ b/src/renderer/store/modules/playlist.ts @@ -15,7 +15,12 @@ import { useIntelligenceModeStore } from './intelligenceMode'; import { usePlayerCoreStore } from './playerCore'; import { useSleepTimerStore } from './sleepTimer'; -const { message } = createDiscreteApi(['message']); +// 延迟初始化 message,避免 chunk 循环依赖导致 TDZ 错误 +let _message: ReturnType['message'] | null = null; +const getMessage = () => { + if (!_message) _message = createDiscreteApi(['message']).message; + return _message; +}; /** * 精简 SongResult 对象,只保留持久化必要字段 @@ -427,7 +432,7 @@ export const usePlaylistStore = defineStore( // 检查是否超过最大连续失败次数 if (consecutiveFailCount.value >= MAX_CONSECUTIVE_FAILS) { console.error(`[nextPlay] 连续${MAX_CONSECUTIVE_FAILS}首歌曲播放失败,停止播放`); - message.warning(i18n.global.t('player.consecutiveFailsError')); + getMessage().warning(i18n.global.t('player.consecutiveFailsError')); consecutiveFailCount.value = 0; // 重置计数器 playerCore.setIsPlay(false); return; @@ -500,7 +505,7 @@ export const usePlaylistStore = defineStore( if (playList.value.length > 1) { // 更新索引到失败的歌曲位置,这样下次递归调用会继续往下 playListIndex.value = nowPlayListIndex; - message.warning(i18n.global.t('player.parseFailedPlayNext')); + getMessage().warning(i18n.global.t('player.parseFailedPlayNext')); // 延迟后尝试下一首(重置单曲重试计数) setTimeout(() => { @@ -508,7 +513,7 @@ export const usePlaylistStore = defineStore( }, 500); } else { // 只有一首歌且失败 - message.error(i18n.global.t('player.playFailed')); + getMessage().error(i18n.global.t('player.playFailed')); playerCore.setIsPlay(false); } } @@ -588,7 +593,7 @@ export const usePlaylistStore = defineStore( } else { console.error(`[prevPlay] 播放上一首失败,保持当前索引: ${currentIndex}`); playerCore.setIsPlay(false); - message.error(i18n.global.t('player.playFailed')); + getMessage().error(i18n.global.t('player.playFailed')); } } catch (error) { console.error('切换上一首出错:', error); @@ -653,7 +658,7 @@ export const usePlaylistStore = defineStore( const recovered = await playerCore.handlePlayMusic(recoverSong, true); if (!recovered) { playerCore.setIsPlay(false); - message.error(i18n.global.t('player.playFailed')); + getMessage().error(i18n.global.t('player.playFailed')); } } }