54

私は Web アプリケーションで作業しており、ローカル ストレージを使用しています。しかし、一部の Firefox ユーザーには、次のエラーが発生していることに気付きました。

NS_ERROR_FILE_CORRUPTED: コンポーネントがエラー コードを返しました: 0x8052000b (NS_ERROR_FILE_CORRUPTED) [nsIDOMStorage.setItem]

関数を呼び出したとき:

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

このエラーを回避する方法はありますか?

4

7 に答える 7

38

これはブラウザ レベルのエラーです。おそらく、このエラーの原因となるような操作を行っていない可能性があります。ブラウザ (またはブラウザが使用する 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は正しいと思いますが、自分で確認してください。

于 2013-09-18T16:56:50.730 に答える
1

この問題は、私たちのクライアントの 1 つで発生しただけでした。

and を完全に削除するhistoryと(それが重要な部分だと思います)offline website data、問題は解決しました。

(Firefox バージョン40.0.3 )

于 2015-09-09T14:32:39.823 に答える