Filesystem API'de Hata Ayıklama

HTML5 Dosya Sistemi güçlü bir API'dir. Güç, karmaşıklığı da beraberinde getirir. Karmaşıklık, hata ayıklamayla ilgili daha fazla soruna yol açar. Chrome DevTools'un şu anda Filesystem API'yi desteklememesi maalesef bir gerçek. Bu da hata ayıklama işlemini olması gerekenden daha zor hale getirir. Zor derken, dosya sistemindeki dosyaları listelemek/kaldırmak için kod yazmanız gerektiğini kastediyorum.

Dosya Sistemi API'siyle ilgili çalışmalarım sırasında, paylaşmak istediğim birkaç ipucu edindim. Her ipucunun kendine özgü sınırlamaları vardır ancak bunların bir kombinasyonunu kullanarak yolun% 90'ını kat edebilirsiniz. İlk 5'i aşağıda bulabilirsiniz:

  1. file://'den çalıştırmadığınızdan emin olun. Bu, birçok kişinin tuzağına düştüğü sinsi bir durumdur. Chrome, file:// üzerinde önemli güvenlik kısıtlamaları uygular. Gelişmiş dosya API'lerinin çoğu (BlobBuilder, FileReader, Dosya Sistemi API'si,...), uygulamayı file://'den yerel olarak çalıştırırsanız hata verir veya sessizce başarısız olur. Kullanabileceğiniz bir web sunucunuz yoksa Chrome, bu güvenlik kısıtlamasını atlamak için --allow-file-access-from-files işaretiyle başlatılabilir. Bu işareti yalnızca test amacıyla kullanın.

  2. Korkunç SECURITY_ERR veya QUOTA_EXCEEDED_ERR. Bu durum genellikle veri yazmaya çalışırken 1. durumdaysanız ortaya çıkar. Aksi takdirde kotanız yoktur. Dosya sisteminin açılabileceği iki tür kota vardır: TEMPORARY veya PERSISTENT. İkincisini kullanıyorsanız kullanıcının uygulamanıza kalıcı depolama alanı iznini açıkça vermesi gerekir. Bunun nasıl yapılacağıyla ilgili bu yayına göz atın.

  3. filesystem: URL FTW. Uygulamanızın kaynağının kökü DirectoryEntry için filesystem: URL'sini açmak kullanışlıdır. Bunun anlamı nedir? Örneğin, uygulamanız www.example.com'te bulunuyorsa filesystem:http://www.example.com/temporary/'ı 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 adresini ziyaret edin.

  4. chrome://settings/cookies, arkadaşınızdır. Bu sayfa, bir kaynak için depolanan verileri silmenizi sağlar. Buna veritabanı depolama alanı, AppCache, çerezler, localStorage ve FileSystem API'deki öğeler dahildir. Ancak bu işlemin "ya hep ya hiç" tarzında olduğunu unutmayın. Yalnızca bir dosyayı veya veri parçalarını kaldıramazsınız.

  5. Hata geri çağırmalarını unutmayın. Filesystem API, asenkron bir dünyada çalışır (Workers'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. Bu adımlar isteğe bağlıdır ancak daha sonra işler karıştığında kendinize çok fazla sıkıntı çektirmezsiniz.