Fehler in der Filesystem API beheben

Das HTML5-Dateisystem ist eine leistungsstarke API. Leistung bringt Komplexität mit sich. Mit der Komplexität steigen auch die Frustration bei der Fehlerbehebung. Leider wird die Filesystem API derzeit nicht von den DevTools unterstützt. Die Fehlerbehebung wird dadurch schwieriger, als sie sein sollte. Mit „schwierig“ meine ich, dass wir dazu verpflichtet sind, Code zum Auflisten/Entfernen von Dateien im Dateisystem zu schreiben.

Während meiner Bemühungen mit der Filesystem API habe ich ein paar Tipps erhalten, die ich gern weiterleiten würde. Jeder Tipp hat seine eigenen Einschränkungen, aber durch eine Kombination davon profitieren Sie 90 %. Hier sind die Top 5:

  1. Achte darauf, dass du nicht über file:// läufst. Das ist ein verstecktes Beispiel, an dem viele Leute vorbeischauen. Für Chrome gelten für file:// erhebliche Sicherheitsbeschränkungen. Viele der erweiterten Datei-APIs (BlobBuilder, FileReader, Filesystem API usw.) geben Fehler aus oder schlagen ohne Rückmeldung fehl, wenn Sie die App lokal über file:// ausführen. Falls du keinen Webserver zur Hand hast, kann Chrome mit dem Flag --allow-file-access-from-files gestartet werden, um diese Sicherheitsbeschränkung zu umgehen. Verwenden Sie dieses Flag nur zu Testzwecken.

  2. Die gefürchtete SECURITY_ERR oder QUOTA_EXCEEDED_ERR. Das passiert normalerweise, wenn Sie versuchen, Daten zu schreiben, Sie aber unter dem Einfluss von Punkt 1 stehen. Wenn das nicht der Fall ist, haben Sie wahrscheinlich kein Kontingent. Es gibt zwei Arten von Kontingenten, mit denen das Dateisystem geöffnet werden kann: TEMPORARY und PERSISTENT. Wenn Sie Letzteres verwenden, muss der Nutzer Ihrer App explizit nichtflüchtigen Speicher gewähren. Eine Anleitung dazu finden Sie in diesem Beitrag.

  3. filesystem: URL FTW Es ist praktisch, die filesystem:-URL für das Stammverzeichnis DirectoryEntry des Ursprungs deiner App zu öffnen. Was bedeutet das? Wenn deine App beispielsweise auf www.example.com läuft, öffne filesystem:http://www.example.com/temporary/ in einem neuen Tab. Chrome zeigt eine schreibgeschützte Liste der Dateien/Ordner an, in denen der Ursprung Ihrer App gespeichert ist. Weitere Informationen zu filesystem:-URLs findest du unter https://www.html5rocks.com/en/tutorials/file/filesystem/#toc-filesystemurls.

  4. chrome://settings/cookies ist dein Freund. Auf dieser Seite können Sie die für einen Ursprung gespeicherten Daten analysieren. Dazu gehören Datenbankspeicher, AppCache, Cookies, localStorage und Dateien der FileSystem API. Seien Sie aber gewarnt, es ist alles oder nichts. Sie können nicht nur eine einzelne Datei oder Datenelemente entfernen.

  5. Vergessen Sie auch Fehler-Callbacks. Die Filesystem API arbeitet in einer asynchronen Umgebung, es sei denn, Sie verwenden die Synchronisierungsversion in Workers. Verwenden Sie in Ihren API-Aufrufen immer den Fehler-Callback. Sie sind optional, aber Sie ersparen sich später eine Menge Trauer, wenn die Dinge immer schneller werden.