storage.sync.get()仅在Firefox中返回undefined的兼容问题
解决Firefox中
chrome.storage.sync.get()返回undefined的问题 问题根源
Firefox的WebExtensions API实现和Chrome存在差异:当调用chrome.storage.sync.get()且不指定任何键名时,若存储中无有效数据,Firefox会返回undefined,而Chrome会返回空对象{}。即使你之前设置过存储数据,也可能因Firefox同步异常、数据未正确持久化等原因触发这个差异。
修复方案
1. 显式传入空对象作为参数
这是最直接的对齐方式,强制让Firefox返回空对象,和Chrome行为保持一致:
chrome.storage.sync.get({}, res => { console.log(res); // 此时Firefox和Chrome都会输出{} });
2. 在回调中兜底处理undefined
如果不想修改get()的调用参数,可以在回调里手动处理undefined的情况:
chrome.storage.sync.get(res => { const finalRes = res || {}; console.log(finalRes); // 统一输出空对象 });
额外检查项
- 确认
manifest.json中已正确声明storage权限:{ "permissions": ["storage"] } - 检查Firefox的同步状态:进入Firefox设置→同步,确保扩展数据同步功能已开启,避免因同步问题导致存储数据未正常加载。
内容的提问来源于stack exchange,提问作者imtorl
相关产品推荐
相关产品推荐

