web-dev-qa-db-fra.com

Erreur dans le stockage local - NS_ERROR_FILE_CORRUPTED - Firefox

J'ai travaillé dans une application Web et j'utilise le stockage local. Mais pour certains utilisateurs de Firefox, je remarque qu'ils ont l'erreur suivante:

NS_ERROR_FILE_CORRUPTED: le composant a renvoyé le code d'échec: 0x8052000b (NS_ERROR_FILE_CORRUPTED) [nsIDOMStorage.setItem]

quand il a appelé la fonction:

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

C'est un moyen d'éviter cette erreur?

33
Juan Jardim

Il s'agit d'une erreur au niveau du navigateur: vous n'avez probablement rien fait de mal pour provoquer cette erreur. Le navigateur (ou la bibliothèque SQLite qu'il utilise) a fait quelque chose de mal ou le fichier a été laissé dans un état non valide en raison d'un problème matériel.

Vous ne pouvez pas vraiment empêcher ce problème, sauf en rejoignant l'équipe de développement de Firefox et en rendant le système de stockage du navigateur plus résistant aux pannes. Il ne semble pas y avoir de moyen de restaurer les données de cette erreur, donc ce que vous aurez à faire est de détecter cette erreur et de dire aux utilisateurs comment éliminer le stockage de leur navigateur en fonction de cet article 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.");
    }
}

Notez que le bloc catch doit vérifier que l'erreur est un NS_ERROR_FILE_CORRUPTED Erreur. Je pense que mon chèque sur e.name est correct, mais vous devez le vérifier par vous-même.

27
apsillers

Après un plantage du système d'exploitation, les fichiers du dossier de profil Firefox peuvent être corrompus et conduire à des sites Web non fonctionnels (dans mon cas, ironiquement, la place de marché Firefox). Ici, webappsstore.sqlite A été affecté.

Comme l'utilisateur @Oli l'a déclaré à Ask Ubunt

Firefox stocke ses données HTML5 dans un fichier appelé webappsstore.sqlite. Cela se trouve dans votre répertoire de profil qui se cache quelque part dans ~/.mozilla/firefox/.... default/(selon le nom de votre profil).

Déplacez-le et redémarrez Firefox et tout reviendra à la vie.

Plus: https://developer.mozilla.org/en/dom/storage

S'il est supprimé/déplacé de votre dossier de profil, Firefox crée un nouveau webappsstore.sqlite fichier. A fonctionné pour moi.
Les informations sur où trouver votre dossier de profil peuvent être accessible ici .

39
Volker E.

Si ce problème venait d'apparaître avec l'un de nos clients.

Suppression complète du history et (je suppose que c'est la partie importante) offline website data résolu le problème.

(Version Firefox 40.0.)

2
Peter Fischaleck

Je ne sais pas si cela aide, mais j'ai ce problème sur Jira. J'ai redémarré Firefox avec des addons désactivés et wen pour Jira et cela a fonctionné. Ensuite, j'ai arrêté Firefox et l'ai redémarré avec les modules complémentaires activés et cela a fonctionné à nouveau. Je ne sais pas pourquoi cela a fonctionné :) J'utilise Firefox Developer edition 48.0a2 (2016-05-24)

0
ddreian