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

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

InvalidResourceUrlFormat

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API przy użyciu interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się 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 <IncludeURL> zasady JavaScript jest nieprawidłowy, wdrożenie serwera proxy interfejsu API się nie uda.

Prawidłowy format do określenia adresu URL zasobu jest następujący:

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

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

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

Diagnostyka

  1. Identyfikowanie nieprawidłowego formatu adresu URL zasobu używanego w zasadzie JavaScript. Te informacje 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 na konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. Jeśli występuje zasada JavaScriptu, w której adres URL zasobu określony w elemencie <ResourceURL> lub <IncludeURL> pasuje do nieprawidłowego wpisu określonego w kroku 1 powyżej, to właśnie 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>
    

    Adres URL zasobu jest podany jako jsc:add_variables.js, co jest nieprawidłowe, dlatego wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i wyświetlany jest 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> zasady 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 przy użyciu interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się 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 się nie uda.

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

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

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

Diagnostyka

  1. Wskaż zasadę JavaScript, w której wystąpił błąd i która zawiera nieprawidłowe odwołanie do adresu URL zasobu. Te informacje znajdziesz w komunikacie o błędzie. Na przykład w poniższym 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 odwołanie do adresu URL zasobu określone w nieudanych zasadach JavaScriptu jest zgodne z wartością podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa odwołanie do adresu URL zasobu jako jsc://dependent_js.js, które 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 pliku w kroku 1 należy do określonego pakietu serwera proxy interfejsu API lub czy istnieje w zakresie organizacji lub środowiska.

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

    Jeśli pliku nie ma na poziomie serwera proxy interfejsu API, organizacji lub środowiska, jest to przyczyna błędu.

    W przykładzie powyżej zwróć uwagę, że nieprawidłowa nazwa pliku JavaScript to dependent_js.js. Na poniższym zrzucie ekranu widać, że w sekcji Skrypty nie pojawia się plik określony jako URL zasobu w zasadzie. 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ść

Upewnij się, że pliki JavaScript określone w elementach <ResourceURL> i <IncludeURL> odnoszą się do prawidłowego pliku istniejącego na serwerze proxy API, organizacji lub środowisku.

Aby poprawić przykładową zasadę JavaScriptu pokazaną powyżej, dodaj plik dependent_js.js do pakietu API proxy. Na poniższym zrzucie ekranu 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 przy użyciu interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się 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 odnoszą się do dowolnego typu zasobu innego niż jsc (plik JavaScript).

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

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

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

Diagnostyka

  1. Identyfikowanie nieprawidłowego typu zasobu używanego w zasadzie JavaScript. Te informacje 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 na konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. Jeśli istnieje zasada JavaScriptu, w której zasób określony w elemencie <ResourceURL> lub <IncludeURL> pasuje do nieprawidłowego typu zasobu określonego w kroku 1 powyżej, to właśnie jest przyczyną błędu.

    Na przykład ta zasada określa typ zasobu jako node, 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>node://js_checkType.js</ResourceURL>
        <IncludeURL>jsc://javascript-dependency.js</IncludeURL>
    </Javascript>
    

    Jako typ zasobu podano node, co jest nieprawidłowe, dlatego wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i wyświetlany jest błąd:

    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 powyżej, zmodyfikuj element <ResourceURL>, tak aby używał typu 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 przy użyciu interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się 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

Ten błąd może wystąpić w tych przypadkach:

  1. Jeśli element <ResourceURL> nie jest zadeklarowany lub adres URL zasobu nie jest zdefiniowany w tym elemencie. Element <ResourceURL> jest wymaganym elementem.
  2. Element <IncludeURL> został zadeklarowany, ale nie ma w nim zdefiniowanego adresu URL zasobu. Element <IncludeURL> jest opcjonalny, ale po zadeklarowaniu adresu URL zasobu musisz go podać w elemencie <IncludeURL>.

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

<IncludeURL></IncludeURL>

Diagnostyka

  1. Wskaż zasadę JavaScriptu, w której wystąpił błąd. Te informacje 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 zasady JavaScript, którego nie udało się zweryfikować, przeprowadź te testy:

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

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

    Przykład 1: ta zasada nie ma zadeklarowanego 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 został zadeklarowany, dlatego wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i wyświetla się błąd:

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

    Przykład 2: ta zasada zawiera 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>

Element <IncludeURL> nie ma adresu URL zasobu, dlatego wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i wyświetla się błąd:

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

Rozdzielczość

Upewnij się, że w zasadach JavaScriptu te elementy:

  1. Zadeklarowano element <ResourceURL>, a adres URL zasobu został w nim zdefiniowany. Element <ResourceURL> jest wymaganym elementem.
  2. Jeśli element <IncludeURL> jest zadeklarowany, URL zasobu musi być zdefiniowany w tym elemencie. <IncludeURL>element jest opcjonalny, ale jeśli zadeklarowano, URL zasobu musi być określony w elemencie <IncludeURL>.

    Aby poprawić przykład 1 pokazany powyżej, dołącz 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, dodaj prawidłowy plik JavaScript do elementu <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>