瀏覽代碼

fix: 处理window不可用时降级使用Memory

layhuts 1 月之前
父節點
當前提交
1f584ff0c9
共有 1 個文件被更改,包括 14 次插入1 次删除
  1. 14 1
      packages/@core/base/shared/src/cache/storage-manager.ts

+ 14 - 1
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 原始键