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

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

InvalidResourceUrlFormat

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest 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ślony w elemencie <ResourceURL> lub w elemencie <IncludeURL> zasady JavaScript jest nieprawidłowy, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Prawidłowy format adresu URL zasobu wygląda tak:

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

Jeśli na przykład element <ResourceURL> został określony w przykładzie poniżej, wdrożenie serwera proxy interfejsu API nie powiedzie się, ponieważ nie jest zgodny z określonym wzorcem:

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

Diagnostyka

  1. Określ nieprawidłowy format adresu URL zasobu używany w zasadzie JavaScript. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w poniższym błędzie 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 dotyczące JavaScriptu w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje jakaś zasada JavaScript, w której adres URL zasobu określony w elemencie <ResourceURL> lub <IncludeURL> jest zgodny z nieprawidłowym wpisem zidentyfikowanym w kroku 1 powyżej, to jest przyczyną błędu.

    Na przykład ta zasada określa adres URL zasobu jako jsc:add_variables.js, który jest zgodny z treścią komunikatu 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 nie powiodło się i występuje błąd:

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

Rozdzielczość

Upewnij się, że format adresu URL zasobu określony w elemencie <ResourceURL> lub <IncludeURL> w zasadzie 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

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest 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 nieistniejącego pliku JavaScript, wdrożenie serwera proxy interfejsu API się nie uda.

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

W interfejsie użytkownika Edge pliki źródłowe JavaScript są widoczne w sekcji jsc w sekcji Skrypty panelu nawigacji edytora proxy interfejsu API. Pliki zasobów możesz też przechowywać w repozytoriach na poziomie organizacji i środowiska (aby na przykład udostępnić kod JavaScript wszystkim serwerom proxy w organizacji lub środkowej).

Ten błąd występuje, jeśli żadnych plików zasobów określonych w zasadzie nie można znaleźć w żadnym z dostępnych zakresów (proxy, środowiska lub organizacji).

Diagnostyka

  1. Zidentyfikuj zasadę JavaScript, w której wystąpił błąd, która zawiera nieprawidłowe odwołanie do adresu URL zasobu. Informacje te znajdziesz w komunikacie o błędzie. W poniższym przykładzie w tym błędzie nazwa zasady to js-TotalVariable, a nieprawidłowe odniesienie do adresu 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 odniesienie do adresu URL zasobu określone w nieudanej zasadzie JavaScript jest zgodne z wartością podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa odniesienie do adresu URL zasobu jako jsc://dependent_js.js, co jest zgodne z treścią komunikatu 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 wskazany w kroku 1 należy do określonego pakietu serwera proxy interfejsu API lub czy znajduje się w zakresie organizacji bądź środowiska.

    1. Aby sprawdzić, czy plik należy do określonego pakietu proxy interfejsu API, wykonaj jedną z tych czynności:
      1. W interfejsie użytkownika Edge sprawdź, czy ten plik znajduje się w sekcji Skrypty serwera proxy interfejsu API.
      2. Pobierz pakiet API Proxy i wyszukaj plik, jeśli istnieje.
    2. Jeśli plik nie należy do określonego pakietu serwerów proxy interfejsu API, sprawdź, czy istnieje on na poziomie organizacji lub środowiska. Do analizy zagrożeń możesz użyć interfejsu Resource Files API.

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

    Zwróć uwagę, że w przykładzie opisanym powyżej nieprawidłowa nazwa pliku JavaScript to dependent_js.js. Na poniższym zrzucie ekranu warto zauważyć, że plik określony w zasadzie jako adres URL zasobu nie pojawia się w sekcji Skrypty. Dlatego nie jest częścią serwera proxy interfejsu API. Jeśli plik nie istnieje także na poziomie organizacji lub środowiska, wdrożenie serwera proxy interfejsu API nie powiedzie się z błędem:

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

Rozdzielczość

Upewnij się, że pliki JavaScript określone w elementach <ResourceURL> i <IncludeURL> odnoszą się do prawidłowego pliku istniejącego 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

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest 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> zasady JavaScript odwołują się do typu zasobu innego niż jsc (plik JavaScript).

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

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

Wynika to z tego, że odnosi się do nieprawidłowego typu zasobu node.

Diagnostyka

  1. Zidentyfikuj nieprawidłowy typ zasobu używany w zasadzie JavaScript. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w poniższym 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 dotyczące JavaScriptu w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje jakaś zasada JavaScript, w której zasób określony w zasadzie <ResourceURL> lub w elemencie <IncludeURL> pasuje do nieprawidłowego typu zasobu wskazanego w kroku 1, to jest przyczyną błędu.

    Na przykład ta zasada określa typ zasobu jako node, co jest zgodne z treścią komunikatu 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>
    

    Ponieważ typ zasobu jest określony jako node, co jest nieprawidłowe, wdrożenie serwera proxy interfejsu API nie powiedzie się 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 zasadzie JavaScriptu zawsze odwołują się do typu zasobu jsc.

Aby poprawić przykład pokazany powyżej, zmodyfikuj element <ResourceURL>, by miał 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

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest 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

W tych sytuacjach wdrożenie zasady JavaScriptu może się nie powieść z powodu tego błędu:

  1. Jeśli element <ResourceURL> nie został zadeklarowany lub adres URL zasobu nie jest w nim zdefiniowany. <ResourceURL> to element obowiązkowy.
  2. Element <IncludeURL> jest zadeklarowany, ale adres URL zasobu nie jest w nim zdefiniowany. Element <IncludeURL> jest opcjonalny, ale po zadeklarowaniu adres URL zasobu musi być określony w elemencie <IncludeURL>.

Jeśli na przykład element <IncludeURL> został 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 zasad JavaScript, który zakończył się niepowodzeniem, wykonaj te czynności:

    1. Element <ResourceURL> musi zostać zadeklarowany, a element musi mieć zdefiniowany adres URL zasobu.
    2. Jeśli element <IncludeURL> jest zadeklarowany, musisz w nim określić adres URL zasobu. Zadeklarowanie elementu <IncludeURL> jest opcjonalne.

    Jeśli któryś z tych testów zakończy się niepowodzeniem, to właśnie jest przyczyną błędu.

    Przykład 1: w poniższej zasadzie 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>
    

    Ponieważ element <ResourceURL> nie został zadeklarowany, wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i występuje błąd:

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

    Przykład 2: w poniższej zasadzie występuje 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 ma adresu URL zasobu, wdrożenie serwera proxy interfejsu API kończy się błędem:

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

Rozdzielczość

Upewnij się, że w zasadzie JavaScriptu spełnione są te warunki:

  1. Element <ResourceURL> jest zadeklarowany, a adres URL zasobu jest w nim zdefiniowany. <ResourceURL> to element obowiązkowy.
  2. Jeśli element <IncludeURL> jest zadeklarowany, adres URL uwzględnionego zasobu musi być zdefiniowany w tym elemencie. Element <IncludeURL> jest opcjonalny, ale po zadeklarowaniu adres URL zasobu należy określić 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, umieść w elemencie <IncludeURL> 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>