google-chrome-extension - 如何在 Chrome DevTools 中查看/编辑 localStorage 和 IndexedDB 数据

标签 google-chrome-extension google-chrome-devtools service-worker indexeddb

我正在开发一个大量使用 IndexedDB 的 Chrome 扩展。我目前正在将工作从使用 list 版本 2 (MV2) 迁移到 list 版本 3 (MV3)。

在 MV2 中,后台页面通过 window.indexedDB 访问 IndexedDB,并且工作正常,我可以通过打开后台页面的 Chrome DevTools 来查看 IndexedDB 数据,然后导航到应用程序> 存储 > IndexedDB。

在MV3中,后台页面需要迁移到相应的Service Worker。服务 worker 使用 self.indexedDB (因为 window 不可用),并且它似乎工作正常(即写入数据库和从数据库读取似乎工作正常) 。但是,当我打开 Service Worker 的 DevTools(从 chrome://extensions/并单击相关扩展的“检查 View :Service Worker”)时,即使在控制之后,IndexedDB 下也看不到数据 -单击 IndexedDB 并选择“刷新 IndexedDB”。

localStorage 似乎也存在同样的问题。尽管我可以在服务工作人员中成功执行以下操作,但本地存储的 DevTools 中没有显示任何内容:

chrome.storage.local.set({"a_key": "some_value"}, function() {
  console.log('setting the key-value pair');
});

setTimeout(checkMyValue, 1000);

function checkMyValue() 
{
  chrome.storage.local.get(["a_key"], function(result) {
    console.log('The value is ' + result["a_key"]);
  });  
}

some_value 打印到控制台。

基本上,我想我要问的是:为什么 DevTools 不显示我的 MV3 Chrome 扩展的 Service Worker 的 IndexedDB 或 localStorage 数据?

(Chrome 版本为 90.0.4430.93(官方版本)(x86_64)。这是在 macOS Big Sur 上,如果这有什么区别的话......)

最佳答案

我在 https://crbug.com/1204851 中提交了实现它的功能请求这样您就可以点击星号来提高报告的重要性并收到进展通知。

当前的解决方法是在扩展程序的任何 UI 页面上打开开发工具:

  • 弹出窗口/选项 - 只需在页面内右键单击并选择“检查”
  • 通过其 chrome-extension://URL 打开的带有扩展程序文件的任何选项卡,例如您可以手动复制粘贴类似 chrome-extension://**id**/manifest.json 的 URL,其中 **id** 是您的扩展程序的 ID启用右上角的“开发者模式”开关后可以在 chrome://extensions 页面中看到。

请注意localStoragechrome.storage 无关,这是完全不同的事情。
请参阅how to inspect extension's chrome.storage in devtools .

关于google-chrome-extension - 如何在 Chrome DevTools 中查看/编辑 localStorage 和 IndexedDB 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67353529/

相关文章:

javascript - Service Worker 即时声明页面的最佳实践

javascript - 将构造函数从单独的文件加载到 Chrome 扩展选项页面

javascript - 无法使用 Chrome 扩展程序的 Keydown

javascript - 检测 Chrome 扩展程序弹出窗口何时打开

javascript - 简单的用户脚本在任何地方都不起作用?

javascript - Chrome 开发者工具网络选项卡中缺少视频内容

node.js - 无法连接到暴露的 Docker 容器端口上的 Node.js 检查器

html - 为什么 CSS 规则被禁用

javascript - FCM : firebase getToken options( ServiceWorkerRegistration, vapidKey)

caching - 具有范围请求插件 : cannot fetch mp3 files when offline 的服务 worker