{"record":{"id":"bb5062fc4129c69f","repo":"linshenkx/prompt-optimizer","slug":"delete-bb5062","errorCode":"delete","errorMessage":"Failed to remove item: ${key}","messagePattern":"Failed to remove item: (.+?)","errorType":"exception","errorClass":"StorageError","httpStatus":null,"severity":"error","filePath":"packages/core/src/services/storage/dexieStorageProvider.ts","lineNumber":133,"sourceCode":"        timestamp: Date.now()\n      });\n    } catch (error) {\n      console.error(`Failed to set storage item (${key}):`, error);\n      throw new StorageError(`Failed to set item: ${key}`, 'write');\n    }\n  }\n\n  /**\n   * 删除存储项\n   */\n  async removeItem(key: string): Promise<void> {\n    await this.initialize();\n    \n    try {\n      await this.db.storage.delete(key);\n    } catch (error) {\n      console.error(`Failed to remove storage item (${key}):`, error);\n      throw new StorageError(`Failed to remove item: ${key}`, 'delete');\n    }\n  }\n\n  /**\n   * 清空所有存储\n   */\n  async clearAll(): Promise<void> {\n    await this.initialize();\n    \n    try {\n      await this.db.storage.clear();\n    } catch (error) {\n      console.error('Failed to clear storage:', error);\n      throw new StorageError('Failed to clear storage', 'clear');\n    }\n  }\n\n  /**","sourceCodeStart":115,"sourceCodeEnd":151,"githubUrl":"https://github.com/linshenkx/prompt-optimizer/blob/3e677b1d9f7e0493c142c175560531e7ae786dce/packages/core/src/services/storage/dexieStorageProvider.ts#L115-L151","documentation":"StorageError with code 'delete' thrown by DexieStorageProvider.removeItem when db.storage.delete(key) rejects — normally only when the database is closed, blocked by a version upgrade in another tab, or IndexedDB is otherwise unavailable. Deleting a non-existent key does NOT throw in Dexie.","triggerScenarios":"Calling removeItem while the Dexie DB is closed or blocked; schema mismatch where the 'storage' table is missing; IndexedDB disabled or corrupted in the runtime.","commonSituations":"Logout/cleanup flows calling removeItem after the DB was torn down; app version upgrade race across tabs; running in environments (some webviews) with flaky IndexedDB.","solutions":["Check the console for the underlying Dexie error logged just before the wrap","Ensure initialize()/db.open() succeeded and no other tab holds an older DB version","Treat delete failures of missing keys as non-fatal: catch StorageError with code 'delete' and continue"],"exampleFix":"// before\nawait provider.removeItem(key);\n\n// after\nawait provider.removeItem(key).catch(e => {\n  if (e instanceof StorageError && e.code === 'delete') return; // already gone / non-fatal\n  throw e;\n});","handlingStrategy":"try-catch","validationCode":"null","typeGuard":"const isStorageDeleteError = (e: unknown): e is StorageError =>\n  e instanceof StorageError && (e as StorageError).code === 'delete';","tryCatchPattern":"try { await provider.removeItem(key); } catch (e) { if (isStorageDeleteError(e)) return; // deleting a missing key is success throw e; }","preventionTips":["Treat removeItem as idempotent in your error handling","Don't call storage APIs after teardown/db.close() during shutdown","Keep only one DB version active across tabs to avoid blocked connections"],"tags":["storage","indexeddb","dexie","delete"],"backgroundTag":"indexeddb-operation-failed","analyzedSha":"3e677b1d9f7e0493c142c175560531e7ae786dce","analyzedAt":"2026-08-27T21:29:16.709Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}