ניפוי באגים ב-Filesystem API

מערכת הקבצים של HTML5 היא ממשק API חזק. עם כוח, יש מורכבות. התהליך מורכב, והתהליך הזה מוביל לתסכול רב יותר מניפוי באגים. לצערנו, ל-DevTools Chrome אין כרגע תמיכה ב-Filesystem API. הוא הופך את ניפוי הבאגים לקשה יותר ממה שהוא אמור להיות. המשמעות היא שנדרשת לכתוב קוד כדי להציג/להסיר קבצים במערכת הקבצים.

במהלך המאמצים שלי עם Filesystem API, קיבלתי כמה טיפים לאורך הדרך. לכל טיפ יש שורה של מגבלות משלו, אבל שימוש בשילוב של הקווים האלה יקנה לכם 90% מההוצאות. הנה 5 המובילים:

  1. חשוב לוודא שהחשבון שלך לא פעיל מ-file://. זאת דוגמה מטעה שהרבה אנשים נוטשים בה. Chrome הגדיר הגבלות אבטחה חמורות על file://. רבים מממשקי ה-API המתקדמים של קבצים (BlobBuilder, FileReader, Filesystem API,...) גורמים לשגיאות או נכשלים בצורה שקטה אם האפליקציה מופעלת באופן מקומי מ-file://. אם אין לך שרת אינטרנט זמין, ניתן להפעיל את Chrome עם הדגל --allow-file-access-from-files כדי לעקוף את הגבלת האבטחה הזו. יש להשתמש בסימון הזה למטרות בדיקה בלבד.

  2. SECURITY_ERR או QUOTA_EXCEEDED_ERR של פחד. זה קורה בדרך כלל כשמנסים לכתוב נתונים, אבל המידע שלכם מושפע מגורמים 1. אם זה לא המצב, סביר להניח שאין לך מכסה. קיימים שני סוגי מכסות שבאמצעותם אפשר לפתוח את מערכת הקבצים, TEMPORARY או PERSISTENT. אם אתם משתמשים באפשרות השנייה, המשתמש צריך להעניק לאפליקציה שלכם אחסון קבוע באופן מפורש. בפוסט הזה מוסבר איך לעשות זאת.

  3. FTW של filesystem: כתובת URL. כדאי לפתוח את כתובת ה-URL filesystem: בשורש DirectoryEntry של מקור האפליקציה. למה הכוונה? לדוגמה, אם האפליקציה מוגדרת ב-www.example.com, צריך לפתוח את filesystem:http://www.example.com/temporary/ בכרטיסייה חדשה. Chrome יציג רשימה לקריאה בלבד של הקבצים/התיקיות המאוחסנים במקור האפליקציה. מידע נוסף על כתובות URL מסוג filesystem: זמין בכתובת https://www.html5rocks.com/en/tutorials/file/filesystem/#toc-filesystemurls.

  4. chrome://settings/cookies חבר/ה שלך. הדף הזה מאפשר למחוק נתונים המאוחסנים עבור מקור. זה כולל אחסון מסד נתונים, AppCache, קובצי cookie, אחסון מקומי ונתונים נוספים ב-FileSystem API. עם זאת, אל דאגה, זה הכול או כלום. אי אפשר להסיר רק קובץ אחד או פיסת נתונים אחת.

  5. חשוב לזכור על אירועי קריאה חוזרת (callback) של שגיאות. ה-Filesystem API פועל בעולם אסינכרוני (אלא אם אתם משתמשים בגרסת הסנכרון ב-Workers). יש להשתמש תמיד בקריאה חוזרת (callback) לשגיאה בקריאות ל-API. לא חובה לבצע את הפעולות האלה, אבל בהמשך יכולות להיות לך חסכונות רבה כשהמצבים יתפוצצו.