电子申请的sessionStorage和localStorage存储在哪里?

ole*_*iba 7 local-storage electron

我正在运行一个电子应用程序,在其渲染过程中我使用HTML5 localStorage.
我很想知道在我的文件系统中这个localStorage实际存储的位置(我相信它是SQLite格式).
我看到了一个浏览器 localStorage存储在哪里 的答案,这里: sessionStorage和localStorage存储在哪里?

我问这个是因为我希望能够运行这个电子应用程序的2个实例,这样每个应用程序都有不同的设置,我将其保存在localStorage中.
具体来说,我对Windows 10最感兴趣,但包装所有操作系统的答案都很棒.

Ale*_*ren 9

它存储在AppData文件夹中,您可以通过查看值找到它require('app').getPath('userData').

这意味着即使删除了应用程序,数据仍会存在.如果你正在运行两个实例,你需要找到一些区分它们的方法,这样它们就不会践踏彼此的数据.

  • 太好了,这对我有用。顺便说一句,我能够启动应用程序的 2 个实例的方式,其中每个实例加载存储在 localStorage 中的不同设置,是使用不同的域启动每个实例,例如本地主机上的不同端口 - 因此每个实例接收不同的 localStorage。 (2认同)

rad*_*vus 8

我必须在我的 Electron 应用程序中使用以下内容才能使其正常工作:

  const remote = require('electron').remote;
  const app = remote.app;
  app.getPath('userData');
Run Code Online (Sandbox Code Playgroud)

但是,它存储数据的路径在:

\Local Storage\leveldb\
Run Code Online (Sandbox Code Playgroud)

所以你的整个路径看起来像:

C:\Users\<USER-NAME>\AppData\Roaming\<APP-NAME>\Local Storage\leveldb\
Run Code Online (Sandbox Code Playgroud)

日志文件:不是 Sqlite DB 尽管浏览器(在我的例子中是 FireFox)将 localStorage 数据存储在一个 sqlite 文件中,但 Electron 似乎没有。

相反,它将数据保存在一个奇怪的 .log 文件中,我的名字是 .log 000003.log

这是我从应用程序的控制台运行三个 localStorage.setItem() 命令后的样子。

示例 .log 文件

这是我运行三个命令的 Electron 应用程序的控制台。如果您仔细查看图像,您可以将命令与 000003.log 文件中的数据进行匹配。

控制台 localStorage.setItem

进一步证明这是存储位置/机制

如果我在控制台中运行 localStorage.getItem("fakeData") 则返回该值。

localStorage.getItem

但是,如果您:

  1. 关闭 Electron 应用程序(必须关闭应用程序,因为它已锁定日志文件)
  2. 删除(或移动)000003.log 文件(或任何你命名的文件)
  3. 再次启动 Electron 应用
  4. 打开控制台
  5. 调用 localStorage.getItem("fakeData")

你不会得到任何返回值。

返回空值

现在完成循环:

  1. 停止你的 Electron 应用
  2. 将日志文件复制回您的 leveldb\ 目录(您必须覆盖上次启动时创建的文件)
  3. 启动你的电子应用程序
  4. 打开控制台
  5. 再次运行 localStorage.getItem()。

您将再次看到该值。

LevelDB:谷歌东西

我正在考虑这种疯狂的格式,然后我想到了最终目录的名称(leveldb)。我做了一个duckduckgo,发现了这个:https : //github.com/google/leveldb

所以我猜这是因为 Electron 使用 Chrome 引擎的格式。

来自维基百科

LevelDB 是由 Google 研究员 Jeffrey Dean 和 Sanjay Ghemawat 编写的开源磁盘键值存储。受 Bigtable 的启发,LevelDB 在新 BSD 许可下托管在 GitHub 上,并已移植到各种基于 Unix 的系统、macOS、Windows 和 Android。