Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 本地存储错误-NS\u错误\u文件\u损坏-firefox_Javascript_Jquery_Firefox_Local Storage - Fatal编程技术网

Javascript 本地存储错误-NS\u错误\u文件\u损坏-firefox

Javascript 本地存储错误-NS\u错误\u文件\u损坏-firefox,javascript,jquery,firefox,local-storage,Javascript,Jquery,Firefox,Local Storage,我一直在一个web应用程序中工作,我正在使用本地存储。但对于一些Firefox用户,我注意到他们有以下错误: NS\u错误\u文件\u损坏:组件返回故障代码:0x8052000b (NS\u错误\u文件\u损坏)[nsIDOMStorage.setItem] 调用函数时: function setLocalStorageItem(key, value){ localStorage.setItem(key, JSON.stringify(value)); } 这是一种避免此错误

我一直在一个web应用程序中工作,我正在使用本地存储。但对于一些Firefox用户,我注意到他们有以下错误:

NS\u错误\u文件\u损坏:组件返回故障代码:0x8052000b (NS\u错误\u文件\u损坏)[nsIDOMStorage.setItem]

调用函数时:

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

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

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

除了加入Firefox开发团队并提高浏览器存储系统的容错性之外,您无法真正防止这个问题。似乎没有任何方法可以从该错误中恢复数据,因此您要做的是检测该错误,并告诉用户如何根据以下内容清除浏览器存储:


请注意,
catch
块应验证错误是否为
NS\u错误\u文件\u损坏
错误。我认为我对
e.name
的检查是正确的,但你应该自己验证。

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

正如user@Oli在

Firefox将其HTML5数据存储在一个名为webappsstore.sqlite的文件中。 它位于您的个人资料目录中,潜伏在 ~/.mozilla/firefox/…默认/(取决于您的个人资料) 打电话)

把它移开,重新启动Firefox,一切都会好起来的 回归生活

更多:

如果从您的个人资料文件夹中删除/移出,Firefox将构建一个新的、经过清理的
webappsstore.sqlite
文件。为我工作。

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

我们的一个客户刚刚出现了这个问题

完全删除
历史记录
和(我想这是重要的部分)
离线网站数据
解决了问题


(Firefox版本40.0.3

不确定这是否有帮助,但我在Jira上遇到了这个问题。我重新启动了Firefox,禁用了插件,并将其发送给Jira,它成功了。然后我停止Firefox并在启用插件的情况下重新启动它,它再次工作。我不知道这是为什么:)我使用Firefox Developer edition 48.0a2(2016-05-24)

通过Firefox首选项清除所有内容可能无法完全清除损坏的SQLite文件所在的本地存储

此时,您有两个选项:

  • 弹出打开控制台并通过Javascript命令清除存储(帽子提示:):
  • 使用终端删除损坏的SQLite文件,并强制Firefox重建该文件
macOS用户的步骤:

  • cd/Users/myusername/Library/Application Support/Firefox/Profiles/…default/
  • rm webappsstore.sqlite
  • 验证是否没有其他文件使用此脚本从以下位置损坏:

    表示i,单位为$(find.-name'*.sqlite');做回显“$i”;echo“PRAGMA integrity_check;”sqlite3-bail“$i”;完成

  • 重新启动Firefox并重新加载页面

  • 这些用户能否执行
    getItem
    ?我认为这个错误意味着Firefox的
    localStorage
    数据的文件级表示混乱,这是由于浏览器级错误或硬件问题(包括中所述的突然断电)。您知道他们正在运行哪个版本的Firefox吗?@Xeano Yes,是23号version@apsillers是的,getItem也有相同的错误,我和Jira/Confluence有过这个问题。在清除“离线网站数据”、删除我的Firefox配置文件文件夹中的
    存储.sqlite
    并重新启动Firefox后,问题得到了解决。在FF50.0.1上,这里也有Jira问题。屏幕空白,无法选择项目。删除了设置->高级->网络->缓冲Webcontent->立即擦除下的脱机缓存,并重新启动了Firefox。在我的机器上也是
    webappsstore.sqlite
    。在$(find.-name'*.sqlite')中为i使用
    ;做回显“$i”;echo“PRAGMA integrity_check;”sqlite3-bail“$i”;在概要文件目录中完成
    ,以验证没有其他数据库被破坏。这对我来说很有效,因为一些有故障的软件损坏了我硬盘上的一些文件,其中包括
    webappsstore.sqlite
    。谢谢这也解决了我在macOS上的问题。文件夹是:<代码> /用户/ MyUrNeNe/库/应用程序支持/ Firefox /Prime/..默认/ < /代码>。Mozilla的优秀开发人员应该考虑使系统更有弹性。如果缓存返回故障,则清除缓存,而不是使操作失败。在我们挖掘stackoverflow问题以找出浏览器缓存的内部以便手动删除它时,浪费了多少工时。只需控制台中的
    localStorage.clear()
    ,就为我解决了这个问题。我在使用TimeMachine恢复备份时遇到了这个问题。之后,macOS Firefox会在使用localstorage的地方给我带来问题。多亏了“macOS用户步骤”,它现在已经修复了。谢谢我在Atlassian上遇到了这个问题-他们的JavaScript代码试图加载一些损坏的东西,否则无法绕过它,但这个控制台魔术解决了它。这也正是引发我问题的原因。。。有人应该告诉他们有一个叫做Jira的东西可以帮助跟踪bug。在我的例子中,完整性检查很有效。另外一个方法是通过管道将输出传输到一个文件,然后查找不正常的DBs。在我的例子中,它发现了一个损坏的索引,可以使用重建。
    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.");
        }
    }
    
    localStorage.clear()
    sessionStorage.clear()