Filesystem API'de Hata Ayıklama

HTML5 Dosya Sistemi güçlü bir API'dir. Güçle birlikte karmaşıklığı da beraberinde getirir. Karmaşıklık, hata ayıklama konusunda daha fazla sıkıntıyı da beraberinde getirir. Chrome DevTools'un şu anda Filesystem API desteği olmadığını üzülerek bildiririz. Hata ayıklamayı olması gerekenden daha zor hale getirir. Zor derken, dosya sistemindeki dosyaları listelemek/kaldırmak için kod yazma zorunluluğunu kastediyorum.

Filesystem API ile yaptığım çalışmalar sırasında bazı ipuçlarından bahsetmek istedim. Her ipucunun kendine özgü sınırlamaları vardır, ancak bunların bir kombinasyonunu kullandığınızda% 90'lık bir oranla karşılaşırsınız. İlk 5'e göz atın:

  1. file:// tarihinden itibaren çalıştırmadığınızdan emin olun. Bu, pek çok kişinin sinsem ezeceği. Chrome, file:// işletim sistemine önemli güvenlik kısıtlamaları uygular. Uygulamayı file:// üzerinden yerel olarak çalıştırırsanız gelişmiş dosya API'lerinin çoğu (BlobBuilder, FileReader, Filesystem API,...) hata verir veya sessizce başarısız olur. Elinizde bir web sunucusu yoksa bu güvenlik kısıtlamasını atlamak için Chrome'u --allow-file-access-from-files bayrağıyla başlatabilirsiniz. Bu işareti yalnızca test amacıyla kullanın.

  2. Çok korkunç SECURITY_ERR veya QUOTA_EXCEEDED_ERR. Bu durum genellikle veri yazmaya çalışırken 1 numaralı etkide bulunduğunuzda ortaya çıkar. Aksi takdirde, büyük ihtimalle kotanız yoktur. Dosya sistemi iki tür kotayla açılabilir: TEMPORARY veya PERSISTENT. İkincisini kullanıyorsanız kullanıcının uygulamanıza açık bir şekilde kalıcı depolama alanı vermesi gerekir. Bunu nasıl yapacağınızı öğrenmek için bu yayına bakın.

  3. filesystem: URL FTW. Uygulamanızın kaynağının DirectoryEntry kökünün filesystem: URL'sini açmak kullanışlı bir özelliktir. Yani ne demek istiyorum? Örneğin, uygulamanız www.example.com üzerindeyse filesystem:http://www.example.com/temporary/ uygulamasını yeni bir sekmede açın. Chrome, uygulama kaynağınızda depolanan dosyaların/klasörlerin salt okunur bir listesini gösterir. filesystem: URL'leri hakkında daha fazla bilgi için https://www.html5rocks.com/en/tutorials/file/filesystem/#toc-filesystemurls adresine bakın.

  4. chrome://settings/cookies arkadaşınız. Bu sayfa, belirli bir kaynak için depolanan verilere nükleer patlama yapmanızı sağlar. Buna veritabanı depolama alanı, AppCache, çerezler, localStorage ve FileSystem API'daki öğeler dahildir. Ancak önceden uyarmanın, ya hep ya hiç söz konusu olmaması gerekiyor. Yalnızca tek bir dosyayı veya veri parçasını kaldıramazsınız.

  5. Hatalı geri çağırmaları unutmayın. Filesystem API, eşzamansız bir dünyada çalışır (Çalışanlar'da senkronizasyon sürümünü kullanmıyorsanız). API çağrılarınızda her zaman hata geri çağırma işlevini kullanın. Bunlar isteğe bağlıdır, ancak işler duruma geldiğinde daha sonra karşılaşacağınız sıkıntılardan kurtulmuş olursunuz.