Rozwiązywanie problemów z wdrażaniem zasad JavaScript

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

InvalidResourceUrlFormat

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

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

Przykładowy zrzut ekranu

Przyczyna

Jeśli format adresu URL zasobu określonego w elemencie <ResourceURL> lub <IncludeURL> zasad JavaScript jest nieprawidłowy, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Prawidłowy format określania adresu URL zasobu jest podany poniżej:

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

Jeśli na przykład element <ResourceURL> jest określony w sposób pokazany poniżej, wdrożenie proxy interfejsu API nie powiedzie się, ponieważ nie jest zgodne z określonym wzorcem:

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

Diagnostyka

  1. Określ nieprawidłowy format adresu URL zasobu użyty w zasadach JavaScript. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nieprawidłowy format adresu URL zasobu to jsc:add_variables.js.

      Error Deploying Revision 1 to test
        Invalid resource url format. Resource url is jsc:add_variables.js.
    
  2. Sprawdź wszystkie zasady JavaScript w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje zasada JavaScript, w której adres URL zasobu określony w elemencie <ResourceURL> lub <IncludeURL> pasuje do nieprawidłowego wpisu zidentyfikowanego w kroku 1, to jest to przyczyna błędu.

    Na przykład te zasady określają adres URL zasobu jako jsc:add_variables.js, co odpowiada temu, co znajduje się w komunikacie o błędzie:

    <?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>
    

    Ponieważ adres URL zasobu jest określony jako jsc:add_variables.js, co jest nieprawidłowe, wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i wyświetla się błąd:

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

Rozdzielczość

Sprawdź, czy format adresu URL zasobu określony w elemencie <ResourceURL> lub <IncludeURL> w zasadach JavaScript jest prawidłowy. Na przykład:

<?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

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

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

Przykładowy zrzut ekranu

Przyczyna

Jeśli elementy <ResourceURL> i <IncludeURL> odwołują się do pliku JavaScript, który nie istnieje, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Jeśli wdrażasz pakiet proxy z komputera lokalnego, źródłowe pliki JavaScript muszą być przechowywane w folderze /apiproxy/resources/jsc. W tym przypadku pliki źródłowe są ograniczone do proxy interfejsu API.

W interfejsie Edge pliki źródłowe JavaScriptu pojawiają się w sekcji Skrypty w panelu Nawigator edytora proxy interfejsu API pod nazwą jsc. Możesz też przechowywać pliki zasobów w repozytoriach na poziomie organizacji i środowiska (np. aby udostępnić kod JavaScript wszystkim serwerom proxy w organizacji lub środowisku).

Ten błąd występuje, jeśli nie można znaleźć żadnego z plików zasobów określonych w zasadach w żadnym z dostępnych zakresów (serwer proxy, środowisko lub organizacja).

Diagnostyka

  1. Określ zasadę JavaScript, w której wystąpił błąd i która zawiera nieprawidłowe odwołanie do adresu URL zasobu. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to js-TotalVariable, a nieprawidłowy adres URL zasobu to jsc://dependent_js.js.

    Invalid resource url ref jsc://dependent_js.js in policy js-TotalVariable in aprabhashankar-eval
    
  2. Sprawdź, czy odwołanie do adresu URL zasobu określone w zasadach JavaScript, które spowodowały błąd, jest zgodne z wartością podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład te zasady określają odwołanie do adresu URL zasobu jako jsc://dependent_js.js, co odpowiada temu, co znajduje się w komunikacie o błędzie:

    <?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. Sprawdź, czy plik źródłowy zidentyfikowany w kroku 1 jest częścią konkretnego pakietu proxy interfejsu API lub czy istnieje w zakresie organizacji lub środowiska.

    1. Aby sprawdzić, czy plik jest częścią konkretnego pakietu proxy interfejsu API, wykonaj jedną z tych czynności:
      1. W interfejsie Edge sprawdź, czy ten plik znajduje się w sekcji Skrypty w proxy interfejsu API.
      2. Pobierz pakiet serwera proxy interfejsu API i sprawdź, czy plik istnieje.
    2. Jeśli plik nie jest częścią konkretnego pakietu serwera proxy interfejsu API, sprawdź, czy istnieje na poziomie organizacji lub środowiska. Do tego celu możesz użyć interfejsu Resource Files API.

    Jeśli plik nie istnieje na poziomie serwera proxy interfejsu API, organizacji lub środowiska, to jest to przyczyną błędu.

    W opisanym powyżej przykładzie przypomnijmy, że nieprawidłowa nazwa pliku JavaScript to dependent_js.js. Na zrzucie ekranu poniżej widać, że plik określony jako adres URL zasobu w zasadach nie pojawia się w sekcji Skrypty. Dlatego nie jest on częścią proxy interfejsu API. Jeśli plik nie istnieje również na poziomie organizacji lub środowiska, wdrożenie serwera proxy interfejsu API zakończy się niepowodzeniem i wyświetli się błąd:

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

Rozdzielczość

Sprawdź, czy pliki JavaScript określone w elementach <ResourceURL> i <IncludeURL> odwołują się do prawidłowego pliku, który istnieje na poziomie serwera proxy interfejsu API, organizacji lub środowiska.

Aby poprawić pokazaną powyżej przykładową zasadę JavaScript, dodaj plik dependent_js.js do pakietu serwera proxy interfejsu API. Na zrzucie ekranu poniżej widać, że pliki JavaScript określone w elementach <ResourceURL> i <IncludeURL> są widoczne w sekcji Skrypty pakietu proxy interfejsu API.

WrongResourceType

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

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

Przykładowy zrzut ekranu

Przyczyna

Ten błąd występuje podczas wdrażania, jeśli elementy <ResourceURL> i <IncludeURL> w zasadach JavaScriptu odwołują się do dowolnego typu zasobu innego niż jsc (plik JavaScript).

Jeśli na przykład element <IncludeURL> jest zadeklarowany w sposób pokazany poniżej, wdrożenie serwera proxy interfejsu API nie powiedzie się:

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

Dzieje się tak, ponieważ odwołuje się do nieprawidłowego typu zasobu node.

Diagnostyka

  1. Określ nieprawidłowy typ zasobu użyty w zasadach JavaScript. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nieprawidłowy typ zasobu to node.

    Resource js_checkType.js is the wrong type. It is node: but Javascript steps use type jsc:.
    
  2. Sprawdź wszystkie zasady JavaScript w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje zasada JavaScript, w której zasób określony w elemencie <ResourceURL> lub <IncludeURL> pasuje do nieprawidłowego typu zasobu zidentyfikowanego w kroku 1 powyżej, to jest to przyczyna błędu.

    Na przykład te zasady określają typ zasobu jako node, co odpowiada temu, co znajduje się w komunikacie o błędzie:

    <?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>
    

    Typ zasobu to node, który jest nieprawidłowy, więc wdrożenie proxy interfejsu API kończy się niepowodzeniem z błędem:

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

Rozdzielczość

Upewnij się, że elementy <ResourceURL> i <IncludeURL> w zasadach JavaScript zawsze odnoszą się do typu zasobu jsc.

Aby poprawić powyższy przykład, zmień element <ResourceURL> na typ zasobu 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

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

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

Przykładowy zrzut ekranu

Przyczyna

Wdrożenie zasady JavaScript może się nie powieść z tym błędem w tych sytuacjach:

  1. Jeśli element <ResourceURL> nie jest zadeklarowany lub adres URL zasobu nie jest w nim zdefiniowany. Element <ResourceURL> jest elementem obowiązkowym.
  2. Element <IncludeURL> jest zadeklarowany, ale adres URL zasobu nie jest w nim zdefiniowany. Element <IncludeURL> jest opcjonalny, ale jeśli jest zadeklarowany, adres URL zasobu musi być określony w elemencie <IncludeURL>.

Jeśli na przykład element <IncludeURL> jest zadeklarowany w sposób pokazany poniżej, wdrożenie serwera proxy interfejsu API nie powiedzie się:

<IncludeURL></IncludeURL>

Diagnostyka

  1. Określ zasadę JavaScript, w której wystąpił błąd. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to Policy-js-example:

    Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].
    
  2. W pliku XML nieudanej zasady JavaScriptu wykonaj te czynności:

    1. Element <ResourceURL> musi być zadeklarowany i musi mieć zdefiniowany adres URL zasobu.
    2. Jeśli zadeklarowany jest element <IncludeURL>, musisz w nim podać adres URL zasobu. Deklarowanie elementu <IncludeURL> jest opcjonalne.

    Jeśli którykolwiek z powyższych testów zakończy się niepowodzeniem, będzie to przyczyną błędu.

    Przykład 1. W tych zasadach nie zadeklarowano elementu <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>
    

    Element <ResourceURL> nie jest zadeklarowany, więc wdrożenie proxy interfejsu API nie powiedzie się i wyświetli się błąd:

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

    Przykład 2: ta zasada ma pusty element <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>

Ponieważ element <IncludeURL> nie zawiera adresu URL zasobu, wdrożenie serwera proxy interfejsu API nie powiedzie się i wyświetli się błąd:

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

Rozdzielczość

W zasadach JavaScriptu sprawdź, czy:

  1. Element <ResourceURL> jest zadeklarowany, a adres URL zasobu jest zdefiniowany w tym elemencie. Element <ResourceURL> jest elementem obowiązkowym.
  2. Jeśli zadeklarowany jest element <IncludeURL>, w tym elemencie musi być zdefiniowany adres URL zasobu do uwzględnienia. Element <IncludeURL> jest opcjonalny, ale jeśli jest zadeklarowany, adres URL zasobu musi być określony w elemencie <IncludeURL>.

    Aby poprawić przykład 1 pokazany powyżej, dodaj element <ResourceURL> z prawidłowym plikiem 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>
    

    Aby poprawić przykład 2 pokazany powyżej, w elemencie <IncludeURL> umieść prawidłowy plik 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>
        <IncludeURL>jsc://js_dependency.js</IncludeURL>
    </Javascript>