פתרון בעיות בפריסת מדיניות JavaScript

אתם צופים במסמכי התיעוד של Apigee ושל Apigee Hybrid.
לעיון במסמכי התיעוד של Apigee Edge.

InvalidResourceUrlFormat

הודעת השגיאה

פריסת proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Deploying Revision revision_number to environment
Invalid resource url format. Resource url is invalid_URL.

הודעת שגיאה לדוגמה

Error Deploying Revision 1 to test
Invalid resource url format. Resource url is jsc:add_variables.js.

דוגמה לצילום מסך

שגיאה בהטמעה של גרסה 1 בבדיקה.

מטרה

אם הפורמט של כתובת ה-URL של המשאב שצוין ברכיב <ResourceURL> או ברכיב <IncludeURL> של מדיניות JavaScript לא תקין, פריסת ה-proxy ל-API תיכשל.

הפורמט הנכון לציון כתובת ה-URL של המשאב מוצג בהמשך:

<ResourceURL>jsc://<file_name>.js</ResourceURL>
<IncludeURL>jsc://<file_name>.js</IncludeURL>

לדוגמה, אם הרכיב <ResourceURL> מצוין כמו בדוגמה הבאה, הפריסה של proxy ל-API נכשלת כי הוא לא פועל לפי התבנית שנקבעה:

<ResourceURL>jsc:add_variables.js</ResourceURL>

אבחון

  1. צריך לזהות את פורמט כתובת ה-URL הלא תקין של המשאב שמוגדר במדיניות JavaScript. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה, פורמט כתובת ה-URL של המשאב לא תקין: jsc:add_variables.js.

      Error Deploying Revision 1 to test
        Invalid resource url format. Resource url is jsc:add_variables.js.
    
  2. בודקים את כל כללי המדיניות של JavaScript ב-API Proxy הספציפי שבו התרחשה הכשל. אם יש מדיניות JavaScript שבה כתובת ה-URL של המשאב שצוינה ברכיב <ResourceURL> או ברכיב <IncludeURL> תואמת לרשומה הלא חוקית שזוהתה בשלב 1 למעלה, אז זו הסיבה לשגיאה.

    לדוגמה, במדיניות הבאה כתובת ה-URL של המשאב היא jsc:add_variables.js, שזהה לכתובת שמופיעה בהודעת השגיאה:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
        <DisplayName>js-TotalVariable</DisplayName>
        <Properties/>
        <ResourceURL>jsc:add_variables.js</ResourceURL>
    </Javascript>
    

    כתובת ה-URL של המשאב מוגדרת כ-jsc:add_variables.js, שהיא לא חוקית, ולכן הפריסה של שרת ה-proxy של ה-API נכשלת עם השגיאה:

    Invalid resource url format. Resource url is jsc:add_variables.js.
    

רזולוציה

חשוב לוודא שפורמט כתובת ה-URL של המשאב שצוין ברכיב <ResourceURL> או <IncludeURL> במדיניות JavaScript תקין. לדוגמה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
    <DisplayName>js-TotalVariable</DisplayName>
    <Properties/>
    <ResourceURL>jsc://add_variables.js</ResourceURL>
</Javascript>

InvalidResourceUrlReference

הודעת השגיאה

פריסת proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Deploying Revision revision_number to environment
Invalid resource url ref invalid_reference in policy policy_name in org_name

הודעת שגיאה לדוגמה

Error Deploying Revision 8 to test
Invalid resource url ref jsc://dependent_js.js in policy js-TotalVariable in aprabhashankar-eval

דוגמה לצילום מסך

שגיאה בפריסת גרסה 8 לבדיקה.

מטרה

אם הרכיבים <ResourceURL> ו-<IncludeURL> מפנים לקובץ JavaScript שלא קיים, ה-Deployment (פריסה) של proxy ל-API תיכשל.

אם אתם פורסים חבילת proxy מהמחשב המקומי, קובצי המקור של JavaScript צריכים להיות מאוחסנים בתיקייה /apiproxy/resources/jsc. במקרה הזה, קובצי המקור מוגבלים ל-proxy ל-API.

בממשק המשתמש של Apigee, קובצי המקור של JavaScript מופיעים בקטע Scripts (סקריפטים) בחלונית Navigator (ניווט) של כלי העריכה של ה-proxy ל-API, מתחת ל-jsc. אפשר גם לאחסן קובצי משאבים במאגרי מידע ברמת הסביבה (לדוגמה, כדי להפוך קוד JavaScript לזמין לכל ה-proxy בארגון או בסביבה).

השגיאה הזו מתרחשת אם לא ניתן למצוא קובץ משאב כלשהו שצוין במדיניות באף אחת מההגדרות הזמינות (proxy או סביבה).

אבחון

  1. מזהים את מדיניות JavaScript שבה התרחשה השגיאה ושכוללת הפניה לא תקינה לכתובת URL של משאב. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא js-TotalVariable וההפניה הלא חוקית לכתובת ה-URL של המשאב היא jsc://dependent_js.js.

    Invalid resource url ref jsc://dependent_js.js in policy js-TotalVariable in aprabhashankar-eval
    
  2. מוודאים שההפניה לכתובת ה-URL של המשאב שצוינה במדיניות JavaScript שנכשלה תואמת לערך שזוהה בהודעת השגיאה (שלב 1 למעלה). לדוגמה, במדיניות הבאה מצוינת הפניה לכתובת ה-URL של המשאב כ-jsc://dependent_js.js, שזהה למה שמופיע בהודעת השגיאה:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
      <DisplayName>js-TotalVariable</DisplayName>
      <Properties/>
      <ResourceURL>jsc://add_variables.js</ResourceURL>
      <IncludeURL>jsc://dependent_js.js</IncludeURL>
    </Javascript>
    
  3. בודקים אם קובץ המקור שזוהה בשלב 1 הוא חלק מחבילת ה-API Proxy הספציפית, או שהוא קיים בהיקף הסביבה.

    1. כדי לבדוק אם הקובץ הוא חלק מחבילת ה-API Proxy הספציפית, פועלים לפי אחד מהשלבים הבאים:
      1. בממשק המשתמש של Apigee, בודקים אם הקובץ נמצא בקטע Scripts של proxy ל-API.
      2. מורידים את חבילת ה-API Proxy ומחפשים אם הקובץ קיים.
    2. אם הקובץ לא נכלל בחבילת ה-API Proxy הספציפית, צריך לבדוק אם הוא קיים ברמת הסביבה. אפשר להשתמש ב-Resource Files API לחקירה הזו.

    אם הקובץ לא קיים ברמת ה-API Proxy או הסביבה, זו הסיבה לשגיאה.

    בדוגמה שמתוארת למעלה, שם קובץ ה-JavaScript הלא תקין הוא dependent_js.js. בצילום המסך שלמטה אפשר לראות שהקובץ שצוין ככתובת URL של משאב במדיניות לא מופיע בקטע Scripts (סקריפטים). לכן, הוא לא חלק מ-API Proxy. אם הקובץ לא קיים גם ברמת הסביבה, הפריסה של ה-API Proxy תיכשל עם השגיאה:

    Invalid resource url ref jsc://dependent_js.js in policy js-TotalVariable in aprabhashankar-eval
    

    שגיאה: כתובת ה-URL של המשאב לא תקינה.

רזולוציה

מוודאים שקובצי ה-JavaScript שצוינו ברכיבים <ResourceURL> ו-<IncludeURL> מפנים לקובץ תקין שקיים ברמת ה-API Proxy או הסביבה.

כדי לתקן את מדיניות JavaScript שמוצגת בדוגמה שלמעלה, מוסיפים את הקובץ dependent_js.js לחבילת ה-API Proxy. בצילום המסך שלמטה אפשר לראות שקובצי ה-JavaScript שצוינו באלמנטים <ResourceURL> ו-<IncludeURL> מוצגים בקטע Scripts של חבילת ה-API Proxy.

דוגמה מתוקנת.

WrongResourceType

הודעת השגיאה

פריסת proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Deploying Revision revision_number to environment
Resource JavaScript_file is the wrong type. It is invalid_type: but JavaScript steps use type jsc:.

הודעת שגיאה לדוגמה

Error Deploying Revision 2 to test
Resource js_checkType.js is the wrong type. It is node: but JavaScript steps use type jsc:.

דוגמה לצילום מסך

שגיאה בפריסת גרסה 2 לבדיקה.

מטרה

השגיאה הזו מתרחשת במהלך הפריסה אם הרכיבים <ResourceURL> ו-<IncludeURL> של מדיניות JavaScript מתייחסים לסוג משאב כלשהו שאינו jsc (קובץ JavaScript).

לדוגמה, אם רכיב <IncludeURL> מוצהר כמו בדוגמה הבאה, הפריסה של proxy ל-API נכשלת:

<IncludeURL>node://javascript-dependency.js</IncludeURL>

הסיבה לכך היא שההפניה היא לסוג משאב node, שזו טעות.

אבחון

  1. לזהות את סוג המשאב הלא חוקי שנעשה בו שימוש במדיניות JavaScript. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה, סוג המשאב הלא תקין הוא node.

    Resource js_checkType.js is the wrong type. It is node: but JavaScript steps use type jsc:.
    
  2. בודקים את כל כללי המדיניות של JavaScript ב-API Proxy הספציפי שבו התרחשה הכשל. אם יש מדיניות JavaScript שבה המשאב שצוין ב-<ResourceURL> או ברכיב <IncludeURL> תואם לסוג המשאב הלא תקין שזוהה בשלב 1 למעלה, אז זו הסיבה לשגיאה.

    לדוגמה, במדיניות הבאה סוג המשאב הוא node, שזהה למה שמופיע בהודעת השגיאה:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
        <DisplayName>js-TotalVariable</DisplayName>
        <Properties/>
        <ResourceURL>node://js_checkType.js</ResourceURL>
        <IncludeURL>jsc://javascript-dependency.js</IncludeURL>
    </Javascript>
    

    מכיוון שסוג המשאב מוגדר כ-node, שהוא לא תקין, הפריסה של ה-API Proxy נכשלת עם השגיאה:

    Resource js_checkType.js is the wrong type. It is node: but JavaScript steps use type jsc:.
    

רזולוציה

מוודאים שהרכיבים <ResourceURL> ו-<IncludeURL> במדיניות JavaScript תמיד מתייחסים לסוג המשאב jsc.

כדי לתקן את הדוגמה שמוצגת למעלה, משנים את רכיב <ResourceURL> כך שסוג המשאב יהיה jsc.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
    <DisplayName>js-TotalVariable</DisplayName>
    <Properties/>
    <ResourceURL>jsc://js_checkType.js</ResourceURL>
    <IncludeURL>jsc://javascript-dependency.js</IncludeURL>
</Javascript>

NoResourceURLOrSource

הודעת השגיאה

פריסת proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

Error Saving Revision revision_number
Bundle is invalid. Errors:[Entity : Policy-policy_name, No ResourceURL or Source;].

הודעת שגיאה לדוגמה

Error Saving Revision 10
Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].

דוגמה לצילום מסך

שגיאה בשמירת הגרסה 10.

מטרה

פריסת מדיניות JavaScript עלולה להיכשל עם השגיאה הזו בתרחישים הבאים:

  1. אם הרכיב <ResourceURL> לא מוצהר או אם כתובת ה-URL של המשאב לא מוגדרת בתוך הרכיב הזה. האלמנט <ResourceURL> הוא אלמנט חובה.
  2. רכיב <IncludeURL> מוצהר אבל כתובת ה-URL של המשאב לא מוגדרת בתוך הרכיב הזה. הרכיב <IncludeURL> הוא אופציונלי, אבל אם הוא מוצהר, צריך לציין את כתובת ה-URL של המשאב בתוך הרכיב <IncludeURL>.

לדוגמה, אם רכיב <IncludeURL> מוצהר כמו בדוגמה הבאה, הפריסה של proxy ל-API נכשלת:

<IncludeURL></IncludeURL>

אבחון

  1. מזהים את מדיניות JavaScript שבה אירעה השגיאה. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Policy-js-example:

    Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].
    
  2. בקובץ ה-XML של מדיניות JavaScript שנכשל, מבצעים את הבדיקות הבאות:

    1. צריך להצהיר על הרכיב <ResourceURL> ולהגדיר את כתובת ה-URL של המשאב.
    2. אם מצהירים על הרכיב <IncludeURL>, צריך לציין בתוכו כתובת URL של משאב. ההצהרה על רכיב <IncludeURL> היא אופציונלית.

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

    דוגמה 1: במדיניות הבאה לא הוגדר רכיב <ResourceURL>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-example">
        <DisplayName>js-example</DisplayName>
        <Properties/>
    </Javascript>
    

    מכיוון שהאלמנט <ResourceURL> לא הוגדר, הפריסה של ה-API Proxy נכשלת עם השגיאה:

    Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].
    

    דוגמה 2: במדיניות הבאה יש רכיב <IncludeURL> ריק.

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-example">
      <DisplayName>js-example</DisplayName>
      <Properties/>
      <ResourceURL>jsc://check_var.js</ResourceURL>
      <IncludeURL></IncludeURL>
  </Javascript>

מכיוון שלרכיב <IncludeURL> אין כתובת URL של משאב, פריסת ה-API Proxy נכשלת עם השגיאה:

  Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].

רזולוציה

מוודאים שכללי המדיניות של JavaScript כוללים את הדברים הבאים:

  1. הרכיב <ResourceURL> מוצהר וכתובת ה-URL של המשאב מוגדרת בתוך הרכיב הזה. האלמנט <ResourceURL> הוא אלמנט חובה.
  2. אם מצהירים על אלמנט <IncludeURL>, צריך להגדיר את כתובת ה-URL של המשאב שרוצים לכלול בתוך האלמנט הזה. אלמנט <IncludeURL> הוא אופציונלי, אבל אם מצהירים עליו, צריך לציין את כתובת ה-URL של המשאב בתוך אלמנט <IncludeURL>.

    כדי לתקן את הדוגמה 1 שמוצגת למעלה, צריך לכלול את הרכיב <ResourceURL> עם קובץ JavaScript תקין:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-example">
        <DisplayName>js-example</DisplayName>
        <Properties/>
        <ResourceURL>jsc://check_var.js</ResourceURL>
    </Javascript>
    

    כדי לתקן את דוגמה 2 שמוצגת למעלה, צריך לכלול קובץ JavaScript תקין ברכיב <IncludeURL>

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-example">
        <DisplayName>js-example</DisplayName>
        <Properties/>
        <ResourceURL>jsc://check_var.js</ResourceURL>
        <IncludeURL>jsc://js_dependency.js</IncludeURL>
    </Javascript>