本地存储出错 – NS_ERROR_FILE_CORRUPTED – firefox

我一直在使用Web应用程序,而且我正在使用本地存储。 但对于一些Firefox用户,我注意到他们遇到以下错误:

NS_ERROR_FILE_CORRUPTED:组件返回失败代码:0x8052000b(NS_ERROR_FILE_CORRUPTED)[nsIDOMStorage.setItem]

当它调用函数时:

function setLocalStorageItem(key, value){ localStorage.setItem(key, JSON.stringify(value)); } 

这是一种避免这种错误的方法吗?

这是一个浏览器级别的错误:您可能没有做任何错误导致此错误。 浏览器(或它使用的SQLite库)要么做错了,要么由于硬件问题导致文件处于无效状态。

除了加入Firefox开发团队并使浏览器的存储系统更具故障能力之外,您无法真正防止此问题。 似乎没有任何方法可以从此错误中恢复数据,因此您需要做的是检测此错误并告诉用户如何根据此MDNpost吹走其浏览器存储:

 try { setLocalStorageItem(key, value); } catch(e) { if(e.name == "NS_ERROR_FILE_CORRUPTED") { showMessageSomehow("Sorry, it looks like your browser storage has been corrupted. Please clear your storage by going to Tools -> Clear Recent History -> Cookies and set time range to 'Everything'. This will remove the corrupted browser storage across all sites."); } } 

请注意, catch块应validation错误是否为NS_ERROR_FILE_CORRUPTED错误。 我认为我对e.name检查是正确的,但你应该自己validation一下。

操作系统崩溃后,Firefox配置文件文件夹中的文件可能已损坏并导致非function性网站(在我的案例中具有讽刺意味的是Firefox市场)。 这里, webappsstore.sqlite受到了影响。

用户@Oli在Ask Ubuntu上表示

Firefox将其HTML5数据存储在名为webappsstore.sqlite的文件中。 这位于您的个人资料目录中,潜伏在〜/ .mozilla / firefox / ….默认/(取决于您的个人资料被调用的地方)。

移开它并重新启动Firefox,一切都将恢复生机。

更多: https : //developer.mozilla.org/en/dom/storage

如果删除/移出您的个人资料文件夹,Firefox会构建一个新的,已清理的webappsstore.sqlite文件。 为我工作。
可在此处访问有关在何处查找配置文件文件夹的信息 。

如果这个问题刚刚出现在我们的客户之一。

完全删除history (我猜这是重要的部分) offline website data解决了这个问题。

(Firefox版本40.0.3

不确定这是否有帮助,但我在Jira上遇到了这个问题。 我重新启动了Firefox,禁用了插件,并对Jira进行了操作。 然后我停止了Firefox,并在启用Addons的情况下重新启动它,它再次运行。 我不知道为什么这样有效:)我使用的是Firefox开发者版48.0a2(2016-05-24)