פתרון בעיות בפריסת מדיניות 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> מצוין כמו בדוגמה הבאה, פריסת ה-API Proxy נכשלת כי היא לא תואמת לדפוס שנקבע:

<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 בשרת ה-proxy הספציפי של ה-API שבו התרחשה השגיאה. אם יש כלל מדיניות של 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, שהיא לא תקינה, ולכן הפריסה של שרת ה-API Proxy נכשלת עם השגיאה:

    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 שלא קיים, הפריסה של proxy ל-API תיכשל.

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

בממשק המשתמש של Apigee, קובצי המקור של JavaScript מופיעים בקטע Scripts שמתחת ל-jsc בחלונית Navigator של הכלי לעריכת proxy ל-API. אפשר גם לאחסן קובצי משאבים במאגרי מידע ברמת הסביבה (כדי להפוך קוד 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>element, צריך לציין בתוכו כתובת URL של משאב. ההצהרה על <IncludeURL>element היא אופציונלית.

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

    דוגמה 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>