本地存储错误 \- 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));
}

这是避免此错误的方法吗?

原文由 Juan Jardim 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 832
2 个回答

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

你无法真正避免这个问题,除非加入 Firefox 开发团队并使浏览器的存储系统更具容错性。似乎没有任何方法可以从此错误中恢复数据,因此您要做的就是检测此错误并根据 此 MDN 帖子 告诉用户如何清除他们的浏览器存储:

 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 块应验证错误是 NS_ERROR_FILE_CORRUPTED 错误。我认为我对 e.name 的检查是正确的,但你应该自己验证一下。

原文由 apsillers 发布,翻译遵循 CC BY-SA 3.0 许可协议

操作系统崩溃后,Firefox 配置文件文件夹中的文件可能会损坏并导致无法正常运行的网站(在我的例子中具有讽刺意味的是 Firefox 市场)。在这里, webappsstore.sqlite 受到了影响。

正如用户@Oli 在 Ask Ubuntu 中所说

Firefox 将其 HTML5 数据存储在名为 webappsstore.sqlite 的文件中。它位于您的配置文件目录中,该目录潜伏在 ~/.mozilla/firefox/….default/ 中的某处(取决于您的配置文件的名称)。

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

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

如果删除/移出您的配置文件文件夹,Firefox 会构建一个新的、经过清理的 webappsstore.sqlite 文件。 为我工作。

可以 在此处访问 有关在哪里可以找到您的个人资料文件夹的信息。

原文由 Volker E. 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题