diff --git a/packages/@core/base/shared/src/cache/storage-manager.ts b/packages/@core/base/shared/src/cache/storage-manager.ts index dc6a28d27..3ad2653a3 100644 --- a/packages/@core/base/shared/src/cache/storage-manager.ts +++ b/packages/@core/base/shared/src/cache/storage-manager.ts @@ -5,6 +5,7 @@ import type { } from './types'; import {LocalStorageDriver} from './local-storage-driver'; +import {MemoryStorageDriver} from './memory-storage-driver'; /** * 存储管理器(策略模式) @@ -17,7 +18,7 @@ class StorageManager { private prefix: string; constructor({driver, prefix = ''}: StorageManagerOptions = {}) { - this.driver = driver || new LocalStorageDriver(); + this.driver = driver || this.createDefaultDriver(); this.prefix = prefix; } @@ -105,6 +106,18 @@ class StorageManager { await this.driver.setItem(fullKey, item); } + /** + * 根据运行环境创建默认驱动: + * - 浏览器环境(window.localStorage 可用)→ LocalStorageDriver + * - SSR / Node 环境 → MemoryStorageDriver + */ + private createDefaultDriver(): IStorageDriver { + if (typeof window !== 'undefined' && window.localStorage) { + return new LocalStorageDriver(); + } + return new MemoryStorageDriver(); + } + /** * 获取完整的存储键(带前缀) * @param key 原始键