我一直在使用Web应用程序,而且我正在使用本地存储。但对于一些Firefox用户,我注意到他们遇到以下错误:
NS_ERROR_FILE_CORRUPTED:组件返回失败代码:0x8052000b (NS_ERROR_FILE_CORRUPTED)[nsIDOMStorage.setItem]
当它调用函数时:
function setLocalStorageItem(key, value){
localStorage.setItem(key, JSON.stringify(value));
}
这是一种避免此错误的方法吗?
答案 0 :(得分:33)
操作系统崩溃后,Firefox配置文件文件夹中的文件可能已损坏并导致非功能性网站(在我的情况下具有讽刺意味的是Firefox市场)。在这里,webappsstore.sqlite
受到了影响。
用户@Oli在Ask Ubuntu
处表示Firefox将其HTML5数据存储在名为webappsstore.sqlite的文件中。 这位于您的个人资料目录中,潜藏在某个地方 〜/ .mozilla / firefox / ....默认/(取决于你的个人资料 叫)。
将其移开并重新启动Firefox,一切都会到来 恢复生机。
更多:https://developer.mozilla.org/en/dom/storage
如果删除/移出您的个人资料文件夹,Firefox会构建一个新的,已清理的webappsstore.sqlite
文件。 为我工作。
有关在何处查找个人资料文件夹的信息可以是accessed here。
答案 1 :(得分:25)
这是一个浏览器级错误:您可能没有做错任何导致此错误。浏览器(或它使用的SQLite库)要么做错了,要么由于硬件问题导致文件处于无效状态。
除了加入Firefox开发团队并使浏览器的存储系统更具故障能力之外,您无法真正阻止此问题。似乎没有任何方法可以从此错误中恢复数据,因此您需要做的是检测此错误并告诉用户如何根据this MDN post吹走其浏览器存储空间:
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
的检查是正确的,但您应该自己验证。
答案 2 :(得分:2)
通过Firefox首选项清除所有内容可能无法完全清除损坏的SQLite文件所在的本地存储。
此时,您有两个选择:
localStorage.clear()
sessionStorage.clear()
针对macOS用户的步骤:
cd /Users/myusername/Library/Application Support/Firefox/Profiles/.....default/
rm webappsstore.sqlite
使用TheConstructor中的该脚本验证没有其他文件损坏:
for i in $(find . -name '*.sqlite'); do echo "$i"; echo "PRAGMA integrity_check;" | sqlite3 -bail "$i"; done
答案 3 :(得分:1)
如果我们的客户之一出现此问题。
完全删除history
和(我猜这是重要的部分)offline website data
解决了这个问题。
(Firefox版 40.0.3 )
答案 4 :(得分:0)
不确定这是否有帮助,但我在Jira上遇到了这个问题。我重新启动了Firefox,禁用了插件,并对Jira进行了操作。然后我停止了Firefox,并在启用了Addons的情况下重新启动它,它再次运行。我不知道为什么这样有效:)我使用的是Firefox开发者版48.0a2(2016-05-24)
答案 5 :(得分:0)
我被这个问题困扰了一个多月,希望有新版本的 Firefox 出现并修复它。至少在 2021 年 7 月 89.0.2 版本之前,我没有使用过。
所以,我有一个 LocalStorage 和 SessionStorage clear 解决方案的书签(在 other answer 中提到。)我的书签是 javascript:localStorage.clear();sessionStorage.clear();
,每次我遇到一个页面时我都会点击它响应,Firefox 中的控制台 (F12) 显示此 NS_ERROR_FILE_CORRUPTED
错误。
但是,这很烦人,而且该解决方案在某些网站(例如 AWS)上不起作用。
我什至下载并重新安装了 Firefox 并清除了 ~/Library/Firefox
和 ~/Library/Mozilla
,但它们也没有帮助。
在 Firefox 中不要丢失我的书签和密码对我来说至关重要。
以下是最终对我有用的方法:
确保您在 Mozilla/Firefox 中创建一个帐户并打开同步。 (右上角的按钮。) 可选:在您的手机上安装 Firefox 并进行同步会很有帮助,以确保您有数据的实时备份,并且在出现问题时不会丢失密码和书签。
打开 Finder。转到~/Library/Application Support
。将 Firefox
文件夹移至回收站。
重新启动 Firefox。 (我有一个 about:restartrequired
的书签,很方便。)
在 Firefox 中重新登录您的个人资料并同步。
答案 6 :(得分:0)
所以当我遇到这个问题时,我参考了答案中的建议,但它们并没有真正帮助。并不是说不丢失历史记录和不必在每个站点上都重新登录对我来说至关重要
破坏 Firefox 配置文件中的整个 storage
目录有什么帮助
UPD:我以这种方式失去了添加配置
什么不起作用:
webappsstore.sqlite
storage.sqlite
ok
storage
目录中)