首页 > 解决方案 > 将 IndexedDB 实例作为 Electron 中的不同网站访问

问题描述

我有一个在 Electron 上运行的 Angular 应用程序,它已经在生产中,但是我做了一个尚未发布的更新,它有一个严重的问题。

我使用IndexedDB确实存储应用程序数据,至于现在我一直在加载应用程序内部网站 mainWindow.loadURL('file://' + __dirname + '/index.html#');

但是我必须创建一个自定义协议registerBufferProtocol来加载文件,现在我像这样加载它们 mainWindow.loadURL('customprotocol://localhost/index.html#');

似乎 Electron 认为这是一个不同的网站,因此它没有访问相同的localStorageindexedDB实例,而是提供了一个新的。

我需要找到一种方法来使用我的新协议来实例化和加载主浏览器窗口,但要以与以前相同的方式保持旧应用程序数据的可访问性。

在我的应用程序旧版本的开发者工具窗口上显示localStorage会话所属file://

旧应用版本的本地存储属于file://

但是,在我制作的新应用程序版本中,它显示localStorage会话属于另一个“新”站点,该站点加载了我的自定义协议fredata://localhost

新应用版本的本地存储属于fredata://localhost

在 App Data 路径上,所有不同网站文件的文件夹仍然存在,我想知道一个简单的重命名是否就足够了,但我认为没有那么简单。

IndexDB 文件夹的应用程序数据路径,显示存储的所有不同网站实例

标签: javascriptelectron

解决方案


推荐阅读