דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?

לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?

מתוזמן נעוץ נעול הועבר תכנות
29 פוסטים 5 כותבים 96 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • E eido

    @dovid אני מתחיל לחשוב שהid_list_message לא סוגר באמת את החיבור.
    כי כל הלוגים מראים בעיה בשורה 7 בקוד הראשון:

    while(okStreet!="1")
        {
    ->        let ans = await call.read([{ type: 'file', data: "/ivr_records/רחוב1" }], "record");
    

    ואז בעצם קורה כדלהלן (כך אני משער):
    הtry בreco תופס שגיאה לא ברורה - אני לא מצליח למצוא שום בדל מידע מה השגיאה, נכנס לcatch משאיר לוג ארוך ולא כ"כ מועיל (מה שכן דליתי ממנו זה:

    Error: HangupError: the call was hangup by the caller
        at EventEmitter.<anonymous> 
    

    ושמשום מה התווסף לurl

    &ApiHangupExtension=1/1/1/1/1&hangup=yes&
    

    )
    מפעיל את

    call.id_list_message([{ type: 'text', data: "אירעה שגיאה" }]);
    

    שלכאורה אמור לסיים את הקוד (ככה אני מבין מהתיעוד)

    this.send(this.#responsesTextQueue.pull() + responseTxt + '&');
                throw new ExitError(this, {
                    target: goToFolderMessageIndex !== -1 ? messages[goToFolderMessageIndex].data : `parent of /${this.extension}`,
                    caller: goToFolderMessageIndex !== -1 ? 'go_to_folder' : 'id_list_message'
                });
    

    אבל במקום זה חוזר בחזרה לchooseStreet שקראה לו, בלי להחזיר ערך לstreet, ככה שהוא null.
    הוא מגיע לשורה הזו:

    if (street==null) {continue;}
    

    ומתחיל את הלולאה מחדש.
    ואז מגיע שוב לשורה:

    while(okStreet!="1")
        {
    ->        let ans = await call.read([{ type: 'file', data: "/ivr_records/רחוב1" }], "record");
    

    ופה זורק שגיאה שא"א לשלוח עוד פעם הודעה למאזין.

    ככה אני מניח.

    אבל זה לא מסביר לי למה רק השגיאה השלישית הקריסה את האפליקציה - עובדה שאחריה כתוב node is starting - ואילו השאר לא הקריסו.

    ואני גם לא רואה פתרון כאן... בגלל שהשגיאה נמצאת בתוך פונקציה, וגם אם אעצור אותה היא תחזור לפונקציה שקראה לה ושם היא תמשיך.

    צדיק תמיםצ מנותק
    צדיק תמיםצ מנותק
    צדיק תמים
    כתב נערך לאחרונה על ידי צדיק תמים
    #21

    @eido כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

    אבל במקום זה חוזר בחזרה לchooseStreet שקראה לו, בלי להחזיר ערך לstreet, ככה שהוא null.
    הוא מגיע לשורה הזו:

    ומתחיל את הלולאה מחדש.
    ואז מגיע שוב לשורה:

    ופה זורק שגיאה שא"א לשלוח עוד פעם הודעה למאזין.

    ככה אני מניח.

    במקום לנחש תלמד להשתמש בדיבאגר של VSC ולראות את הזרימה של הקוד "בעיניים"
    תחסוך לעצמך המון כאב ראש עתידי

    Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
    טיפים

    E תגובה 1 תגובה אחרונה
    0
    • צדיק תמיםצ צדיק תמים

      @יהודי-טוב כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

      2 - הוא כתב שעדיף בלי, כי אם אתה לא מטפל בשגיאה אז זה נזרק הלאה ויש לו בספריה טיפול בשגיאות.

      יותר מזה, ברגע שהוא עושה try catch על הכל הוא "בולע" את השגיאה שנועדה להשמיד את הסקופ של הפונקציה, וממילא הקוד שלו חשוף לבאג כזה שהוא מנסה להחזיר תשובה פעמיים
      ואם תאמר - מה אם תהיה שגיאה לא צפויה? אז בשביל זה יש את הקאלבק הגלובלי כדי שהאפליקציה לא תקרוס, המשתמש יקבל תשובה, ואם תרצה תוכל גם לשלוח לעצמך מייל על השגיאה וכדומה...

      E מנותק
      E מנותק
      eido
      כתב נערך לאחרונה על ידי
      #22

      @צדיק-תמים אז אני יכול למחוק את כל הtry/catch מהפרוייקט?

      תגובה 1 תגובה אחרונה
      0
      • E eido

        @צדיק-תמים כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

        @dovid הכי טוב היה בלי try בלבד חוץ מנקודתי בשורה שרוצים לטפל בשגיאות שלה בצורה שונה
        יש לספריה קאלבק מיוחד כדי לטפל בשגיאות לא צפויות בצורה מרוכזת במקום לפזר בקוד try catch

        אהה חזק, עכשיו הבנתי מה התכוונת.
        אבל זה תופס את כל החריגות?
        איך זה עובד?

        צדיק תמיםצ מנותק
        צדיק תמיםצ מנותק
        צדיק תמים
        כתב נערך לאחרונה על ידי
        #23

        @eido כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

        אבל זה תופס את כל החריגות?

        כל החריגות שלא נתפסו קודם - uncaughtErrorHandler

        איך זה עובד?

        כיוון שכל הפונקציה של השיחה זה בעצם פונקציה אסינכרונית שהראוטר (הספריה) מריץ, אז הראוטר מריץ אותה בתוך try catch כדי שיהיה אפשר לטפל בצורה נאותה בשגיאות לא צפויות, נניח אם יש לך בקוד נסיון קריאה ל API חיצוני שלא זמין

        Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
        טיפים

        תגובה 1 תגובה אחרונה
        1
        • צדיק תמיםצ צדיק תמים

          @eido כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

          אבל במקום זה חוזר בחזרה לchooseStreet שקראה לו, בלי להחזיר ערך לstreet, ככה שהוא null.
          הוא מגיע לשורה הזו:

          ומתחיל את הלולאה מחדש.
          ואז מגיע שוב לשורה:

          ופה זורק שגיאה שא"א לשלוח עוד פעם הודעה למאזין.

          ככה אני מניח.

          במקום לנחש תלמד להשתמש בדיבאגר של VSC ולראות את הזרימה של הקוד "בעיניים"
          תחסוך לעצמך המון כאב ראש עתידי

          E מנותק
          E מנותק
          eido
          כתב נערך לאחרונה על ידי eido
          #24

          @צדיק-תמים איך אפשר לדבאג קוד שאמור לרוץ על שרת?
          הוא הרי אמור לקבל בקשות, לא?

          צדיק תמיםצ תגובה 1 תגובה אחרונה
          0
          • E eido

            @צדיק-תמים איך אפשר לדבאג קוד שאמור לרוץ על שרת?
            הוא הרי אמור לקבל בקשות, לא?

            צדיק תמיםצ מנותק
            צדיק תמיםצ מנותק
            צדיק תמים
            כתב נערך לאחרונה על ידי צדיק תמים
            #25

            @eido אתה יכול לדבג ישירות על השרת עם Remote SSH (תוסף של מייקרוסופט ל VSC)
            אבל אתה אמור להיות מסוגל להגיש את הפיתוח המקומי שלך החוצה ולדבג מקומית מול בקשות שמגיעות מימות, יש כל מיני כלים שמאפשרים להנגיש שירות לוקאלי החוצה - יש אפילו אחד מובנה ב VSC, זה דרך המלך

            Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
            טיפים

            E 2 תגובות תגובה אחרונה
            0
            • צדיק תמיםצ צדיק תמים

              @eido אתה יכול לדבג ישירות על השרת עם Remote SSH (תוסף של מייקרוסופט ל VSC)
              אבל אתה אמור להיות מסוגל להגיש את הפיתוח המקומי שלך החוצה ולדבג מקומית מול בקשות שמגיעות מימות, יש כל מיני כלים שמאפשרים להנגיש שירות לוקאלי החוצה - יש אפילו אחד מובנה ב VSC, זה דרך המלך

              E מנותק
              E מנותק
              eido
              כתב נערך לאחרונה על ידי
              #26

              @צדיק-תמים נו, תשתף אותי מה שמו.

              צדיק תמיםצ תגובה 1 תגובה אחרונה
              0
              • E eido

                @צדיק-תמים נו, תשתף אותי מה שמו.

                צדיק תמיםצ מנותק
                צדיק תמיםצ מנותק
                צדיק תמים
                כתב נערך לאחרונה על ידי
                #27

                @eido של מי?

                Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                טיפים

                תגובה 1 תגובה אחרונה
                0
                • צדיק תמיםצ צדיק תמים

                  @eido אתה יכול לדבג ישירות על השרת עם Remote SSH (תוסף של מייקרוסופט ל VSC)
                  אבל אתה אמור להיות מסוגל להגיש את הפיתוח המקומי שלך החוצה ולדבג מקומית מול בקשות שמגיעות מימות, יש כל מיני כלים שמאפשרים להנגיש שירות לוקאלי החוצה - יש אפילו אחד מובנה ב VSC, זה דרך המלך

                  E מנותק
                  E מנותק
                  eido
                  כתב נערך לאחרונה על ידי
                  #28

                  @צדיק-תמים כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

                  יש אפילו אחד מובנה ב VSC, זה דרך המלך

                  שלו
                  ניסיתי עכשיו לדבאג דרך הvsc ולא הוא לא נותן שום נתון

                  צדיק תמיםצ תגובה 1 תגובה אחרונה
                  0
                  • E eido

                    @צדיק-תמים כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:

                    יש אפילו אחד מובנה ב VSC, זה דרך המלך

                    שלו
                    ניסיתי עכשיו לדבאג דרך הvsc ולא הוא לא נותן שום נתון

                    צדיק תמיםצ מנותק
                    צדיק תמיםצ מנותק
                    צדיק תמים
                    כתב נערך לאחרונה על ידי צדיק תמים
                    #29

                    @eido יש לך בפאנל התחתון (של הטרמינל) לשונית Ports
                    https://code.visualstudio.com/docs/debugtest/port-forwarding
                    שים לב שזה לא על Private
                    אבל ngrok משמעותית יותר מהיר נכון לפעם אחרונה שבדקתי

                    Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                    טיפים

                    תגובה 1 תגובה אחרונה
                    0
                    תגובה
                    • תגובה כנושא
                    התחברו כדי לפרסם תגובה
                    • מהישן לחדש
                    • מהחדש לישן
                    • הכי הרבה הצבעות


                    • 1
                    • 2
                    בא תתחבר לדף היומי!
                    • התחברות

                    • אין לך חשבון עדיין? הרשמה

                    • התחברו או הירשמו כדי לחפש.
                    • פוסט ראשון
                      פוסט אחרון
                    0
                    • דף הבית
                    • קטגוריות
                    • פוסטים אחרונים
                    • משתמשים
                    • חיפוש
                    • חוקי הפורום