Rozwiązywanie problemów z błędami środowiska wykonawczego zasad JavaScript

Wyświetlasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

ScriptExecutionFailed

Kod błędu

steps.javascript.ScriptExecutionFailed

Treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of javascript_policy_name failed with error: error_type: error_description. (javascript_source_file_name)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Rodzaje błędów i ich możliwe przyczyny

Zasady JavaScript mogą wywoływać wiele różnych typów błędów ScriptExecutionFailed. Najczęściej występujące błędy podajemy w tabeli:

Typ błędu Przyczyna
Błąd zakresu Użycie liczby wykraczającej poza dopuszczalny zakres wartości wiąże się z błędem RangeError.
Błąd pliku referencyjnego Jeśli użyjesz (odwołujesz się do) zmiennej, która nie została zadeklarowana, zostanie zgłoszony błąd ReferenceError.
Błąd składni Przy próbie oceny kodu z błędem składniowym zgłaszany jest błąd SyntaxError.
Błąd typu Użycie operacji spoza zakresu oczekiwanych typów powoduje zgłoszenie błędu TypeError.
Błąd identyfikatora URI W przypadku użycia niedozwolonych znaków w funkcji identyfikatora URI zostanie zgłoszony błąd URIError.

Błąd zakresu

Wykonywanie operacji na wartości lub jej przekazywania powoduje zgłoszenie typu błędu RangeError do funkcji, która nie znajduje się w zbiorze ani w zakresie dozwolonych wartości.

Ten błąd może wystąpić np. w tych sytuacjach:

  1. W niektórych interfejsach API Date, jeśli używasz nieprawidłowej daty, np. 31 września 2018 r.
  2. Jeśli przekażesz nieprawidłową wartość do metod numerycznych, takich jak Number.toPrecision(), Number.tofixed() lub Number.toExponential(). Jeśli na przykład w metodzie Number.toPrecision() przekażesz dużą wartość, taką jak 400 lub 500, zobaczysz błąd zakresu.
  3. jeśli utworzysz tablicę o niedozwolonej długości.

Treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"RangeError: error_description. (javascript_source_file_name:line_number)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Uwaga: diagnoza i rozwiązywanie błędów dotyczących zakresu zależy od konkretnego komunikatu o błędzie wygenerowanego przez zasadę JavaScriptu. Poniżej podajemy kilka przykładów.

Przykład 1. Nieprawidłowa data

Przykładowa treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of ParseDate failed with error: Javascript runtime error: \"RangeError: Date is invalid. (ParseDate.js:2)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Diagnostyka

  1. Wskaż zasadę JavaScriptu, jej plik źródłowy, numer wiersza, w którym wystąpił błąd, oraz jego opis. Wszystkie te informacje znajdziesz w elemencie faultstring odpowiedzi na błąd. Na przykład w tym pliku faultstring nazwa zasady JavaScript to ParseDate, plik źródłowy JavaScript to ParseDate.js, numer wiersza, w którym wystąpił błąd, to 2, a opis błędu to Date is invalid:

    "faultstring": "Execution of ParseDate failed with error: Javascript runtime error: \"RangeError: Date is invalid. (ParseDate.js:2)\""
    
  2. Sprawdź plik źródłowy JavaScript (zidentyfikowany w kroku 1 powyżej) i sprawdź, czy w numerze wiersza podanym w błędzie występuje nieprawidłowa data lub czy zmienna użyta w numerze wiersza ma nieprawidłową datę. Jeśli została użyta nieprawidłowa data, to to jest przyczyną błędu.

    Oto przykładowy plik źródłowy JavaScript, który prowadzi do tego błędu:

    ParseDate.js

    var date = new Date('2018-09-31T11:19:08.402Z');
    date.toISOString();
    

    W tym przykładzie w wierszu 2 jest używana zmienna date. Po sprawdzeniu pliku źródłowego widać, że zmienna date ma ustawioną nieprawidłową datę: 2018-09-31T11:19:08.402Z.. Ta data jest nieprawidłowa, ponieważ wrzesień ma 30 dni.

    Uwaga: w tym przykładzie używany jest format ISO-8601: YYYY-MM-DDTHH:mm:ss.sssZ.

Rozdzielczość

Dopilnuj, aby podczas korzystania z interfejsów Date API w kodzie JavaScript zawsze używać prawidłowej daty.

Aby poprawić przykładowy kod JavaScript widoczny powyżej, możesz ustawić datę jako Sept 30 2018 w następujący sposób:

var date = new Date('2018-09-30T11:19:08.402Z');
date.toISOString();

Przykład 2. Nieprawidłowy numer przekazany do Precision APIs

Przykładowa treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Diagnostyka

  1. Wskaż zasadę JavaScriptu, jej plik źródłowy, numer wiersza, w którym wystąpił błąd, oraz jego opis. Wszystkie te informacje znajdziesz w elemencie faultstring odpowiedzi na błąd. Na przykład w kodzie faultstring nazwa zasady JavaScript to SetNumberPrecision, plik źródłowy JavaScript to SetNumberPrecision.js, numer wiersza, w którym wystąpił błąd, to 2, a opis błędu to Precision 400 out of range..

    "faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\""
    
  2. Sprawdź plik źródłowy JavaScript (podany w kroku 1 powyżej). Jeśli w opisie błędu użyto dużej liczby, o ile jest on używany w konkretnym wierszu, to właśnie on jest przyczyną błędu.

    Oto przykładowy plik źródłowy JavaScript, który prowadzi do tego błędu:

    SetNumberPrecision.js

    var number = 12.3456;
    var rounded_number = number.toPrecision(400);
    print("rounded_number = " + rounded_number);
    

    Zwróć uwagę, że w tym przykładzie w wierszu numer 2 została użyta duża wartość 400. Ponieważ nie można ustawić dokładności na tak dużą liczbę cyfr, występuje następujący błąd:

    "faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\""
    

Rozdzielczość

Upewnij się, że liczba używana w metodzie toPrecision() mieści się w zakresie dozwolonych wartości.

Aby rozwiązać problem z opisanym powyżej przykładem kodu JavaScript, ustaw liczbę istotnych cyfr na 2, która jest prawidłowa:

var number = 12.3456;
var rounded_number = number.toPrecision(2);
print("rounded_number = " + rounded_number);

Błąd pliku referencyjnego

Typ błędu ReferenceError jest zgłaszany, gdy niezdefiniowana zmienna w JavaScripcie jest używany (wywoływany) lub obsługiwany.

Treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"ReferenceError: variable_name is not defined. (javascript_source_file_name:line_number)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Diagnostyka

  1. Wskaż zasadę JavaScript, jej plik źródłowy i numer wiersza, do którego odwołuje się niezdefiniowana zmienna. Wszystkie te informacje znajdziesz w elemencie faultstring odpowiedzi na błąd. Na przykład w kodzie faultstring nazwa zasady JavaScript to ComputeTotalPrice, odpowiedni plik źródłowy to ComputeTotalPrice.js, numer wiersza, w którym wystąpił błąd, to 3, a nazwa niezdefiniowanej zmiennej to price..

    "faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
    
  2. Sprawdź numer wiersza w pliku źródłowym JavaScriptu i upewnij się, że odwołuje się do niezdefiniowanej zmiennej określonej w kroku 1 powyżej. Na przykład w 3. wierszu podany kod JavaScriptu odwołuje się do niezdefiniowanej zmiennej price, która jest zgodna z tym, co znajduje się w wierszu faultstring:

    ComputeTotalPrice.js

    var item = context.getVariable("request.queryparam.item");
    var quantity = context.getVariable("request.queryparam.quantity");
    var totalprice = parseInt(quantity) * parseInt(price);
    context.setVariable("TotalPrice", totalprice);
    
    
  3. Sprawdź, czy dana zmienna jest zdefiniowana w kodzie JavaScriptu. Jeśli zmienna nie jest zdefiniowana, to jest przyczyną błędu.

    W powyższym przykładowym skrypcie użyto niezadeklarowanej/niezdefiniowanej zmiennej price, dlatego pojawi się taki komunikat o błędzie:

    "faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
    

Rozdzielczość

Upewnij się, że wszystkie zmienne, do których odwołuje się kod JavaScript, są prawidłowo zdefiniowane.

Aby rozwiązać problem z powyższym przykładem kodu JavaScript, zdefiniuj zmienną cenę przed jej użyciem. Na przykład:

var item = context.getVariable("request.queryparam.item");
var quantity = context.getVariable("request.queryparam.quantity");
var price = context.getVariable("request.queryparam.price");
var totalprice = parseInt(quantity) * parseInt(price);
context.setVariable("TotalPrice", totalprice);

Błąd składni

Typ błędu SyntaxError jest zgłaszany, gdy mechanizm JavaScript napotyka tokeny. lub kolejności tokenów niezgodnej ze składnią języka lub w przypadku nieprawidłowego są przekazywane do interfejsów API parsera, np. analizy JSON/XML.

Ten błąd występuje na przykład, jeśli nieprawidłowy lub nieprawidłowo sformułowany ładunek JSON jest przekazywany jako dane wejściowe do interfejsu API JSON.parse używanego w ramach zasady JavaScript.

Treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"SyntaxError: error_description. (javascript_source_file_name:line_number)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Diagnostyka

  1. Wskaż zasadę JavaScriptu, jej plik źródłowy, numer wiersza, w którym wystąpił błąd, oraz jego opis. Wszystkie te informacje znajdziesz w elemencie faultstring odpowiedzi na błąd. Na przykład w tym pliku faultstring nazwa zasady JavaScript to ParseJSONRequest, plik źródłowy JavaScript to ParseJSONRequest.js, numer wiersza, w którym wystąpił błąd, to 2, a opis błędu to Unexpected token:

    "faultstring": "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
    
  2. Sprawdź wiersz numer 2 w pliku źródłowym JavaScriptu (podany w kroku 1 powyżej) i sprawdź, jaka operacja jest wykonywana. Jeśli wykonywana jest funkcja JSON.parse(), sprawdź przekazany do niej parametr wejściowy. Jeśli parametr wejściowy jest nieprawidłowy lub ma nieprawidłowy format JSON, to jest przyczyną błędu.

    Oto przykładowy kod JavaScript, który prowadzi do tego błędu:

    var input = context.getVariable("request.content");
    var result = JSON.parse(input);
    

    W tym przykładzie ładunek żądania (request.content) przekazywany do serwera proxy interfejsu API jest używany jako dane wejściowe funkcji JSON.parse().

    Oto przykładowe wywołanie interfejsu API, które pokazuje, jak żądanie zostało przekazane:

    curl -v "http://<org>-<env>.apigee.net/v1/js-demo" -H "Content-Type: application/json" -X POST -d '<city>Bangalore</city>'
    

    W powyższym żądaniu do serwera proxy interfejsu API przekazujemy poniższy ładunek XML <city>Bangalore</city> Interfejs JSON.parse API oczekuje podania prawidłowego kodu JSON ale ponieważ ładunek XML jest przekazywany, kończy się niepowodzeniem i zostaje wyświetlony następujący błąd:

    "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
    

Rozdzielczość

Pamiętaj, aby przekazywać prawidłowe dane wejściowe do interfejsów API analizy, które są używane w kodzie JavaScript.

Aby rozwiązać problem z omówioną powyżej przykładową zasadą, prześlij prawidłowe żądanie ładunku JSON w następujący sposób:

curl -v "http://<org>-<env>.apigee.net/v1/js-demo" -H "Content-Type: application/json" -X POST -d '{"city" : "Bangalore"}'

Błąd typu

Typ błędu TypeError jest zgłaszany, gdy:

  • operand lub argument przekazany do funkcji jest niezgodny z typem oczekiwanym przez ten operator lub funkcję.
  • Funkcja jest wywoływana dla obiektu o wartości null, niezdefiniowanym lub niewłaściwym.
  • Dostęp do właściwości uzyskuje się z obiektu o wartości null, niezdefiniowanym lub niewłaściwym.

Przykładowy błąd typu:

  • Jeśli spróbujesz wywołać funkcję toUpperCase() na numerze. Dzieje się tak, ponieważ funkcja toUpperCase() może być wywoływana tylko w przypadku obiektów typu string.
  • Jeśli próbujesz odczytać właściwość z obiektu null lub nieokreślonego.

Treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"TypeError: error_description. (javascript_source_file_name:line_number)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Przykład 1. Wywołanie funkcji na niewłaściwym obiekcie

Ten błąd występuje wtedy, gdy próbujesz wywołać funkcję na nieobsługiwanym obiekcie. Jeśli na przykład spróbujesz wywołać funkcję toUpperCase() dla liczby, błąd. Dzieje się tak, ponieważ funkcja toUpperCase() może być wywoływana tylko na obiektach typu string.

Przykładowa treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of ConvertToUpperCase failed with error: Javascript runtime error: \"TypeError: Cannot find function toUpperCase in object 100. (ConvertToUpperCase.js:2)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Diagnostyka

  1. Wskaż zasadę JavaScriptu, jej plik źródłowy, numer wiersza, w którym wystąpił błąd, oraz jego opis. Wszystkie te informacje znajdziesz w elemencie faultstring odpowiedzi na błąd. Na przykład w tagu faultstring nazwa zasady JavaScript to ConvertToUpperCase, plik źródłowy to ConvertToUpperCase.js, numer wiersza to 2, a opis błędu to **Cannot find function toUpperCase in object 100.

    "faultstring": "Execution of ConvertToUpperCase failed with error: Javascript runtime error: \"TypeError: Cannot find function toUpperCase in object 100. (ConvertToUpperCase.js:2)\""
    

    Opis błędu wskazuje, że wywołujesz funkcję toUpperCase() dla obiektu, którego wartość liczbowa wynosi 100.

  2. Sprawdź plik źródłowy JavaScript i sprawdź, czy wywołujesz funkcję toUpperCase() dla obiektu, którego wartość liczbowa wynosi 100 w wierszu 2 (określonym w kroku 1 powyżej). Jeśli tak, to to jest przyczyną błędu.

    Oto przykładowy plik źródłowy JavaScript, który prowadzi do tego błędu:

    ConvertToUpperCase.js

    var number = 100;
    var result = number.toUpperCase();
    

    W powyższym kodzie JavaScript zmienna number jest ustawiona na wartość 100. Funkcja toUpperCase()( jest następnie wywoływana dla obiektu number. Funkcja toUpperCase() może być wywoływana tylko w przypadku obiektów ciągu znaków, dlatego pojawia się błąd:

    "Execution of ConvertToUpperCase failed with error: Javascript runtime error: \"TypeError: Cannot find function toUpperCase in object 100. (ConvertToUpperCase.js:2)\""
    

Rozdzielczość

Zawsze używaj funkcji takich jak toUpperCase() na prawidłowych obiektach.

Aby poprawić ten przykład, możesz utworzyć zmienną ciągu znaków, a potem wywołać funkcję toUpperCase() w ciągu znaków:

var text = "Hello Apigee !";
var result = text.toUpperCase();

Przykład 2. Nie można odczytać właściwości z niezdefiniowanego obiektu

Jeśli spróbujesz uzyskać dostęp do właściwości z niezdefiniowanego obiektu lub odczytać ją z niego, otrzymasz ten błąd. Ten błąd może wystąpić na przykład wtedy, gdy próbujesz uzyskać dostęp do danych z: obiektu w tablicy, ale obiekt jest niezdefiniowany. Zobacz szczegółowe wyjaśnienie poniżej.

Przykładowa treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of ParseJSONResponse failed with error: Javascript runtime error: \"TypeError: Cannot read property \"length\" from undefined. (ParseJSONResponse.js:7)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Diagnostyka

  1. Wskaż zasadę JavaScriptu, jej plik źródłowy, numer wiersza, w którym wystąpił błąd, oraz jego opis. Wszystkie te informacje znajdziesz w elemencie faultstring odpowiedzi na błąd. Na przykład w tym pliku faultstring nazwa zasady to ParseJSONResponse, plik źródłowy to ParseJSONResponse.js, numer wiersza to 6, a opis błędu to Cannot read property "length" from undefined.

    "faultstring": "Execution of ParseJSONResponse failed with error: Javascript runtime error: \"TypeError: Cannot read property \"length\" from undefined. (ParseJSONResponse.js:6)\""
    

    Ten błąd oznacza, że właściwości length nie można odczytać z niezdefiniowanego obiektu.

  2. Sprawdź numer wiersza w pliku źródłowym JavaScriptu (podany w kroku 1 powyżej) i upewnij się, że obiekt ma prawidłową wartość lub nie jest zdefiniowany. Konieczne może być przeczytanie i zrozumienie całego pliku źródłowego, aby ustalić, jak zdefiniowano lub wywnioskowano konkretny obiekt, i ustalić, dlaczego obiekt jest niezdefiniowany. Jeśli okaże się, że konkretny obiekt jest rzeczywiście niezdefiniowany i próbujesz uzyskać z niego dostęp do długości właściwości, to właśnie jest przyczyną błędu.

    Przyjrzyjmy się przykładowi, aby lepiej zrozumieć ten problem:

    1. Załóżmy, że otrzymujesz z serwera backendu tę odpowiedź JSON:

      {
          "cars": [
             { "name":"Toyota", "count": 150 }
             { "name":"Honda", "count": 100 },
             { "name":"Ford", "count": 75 }
          ]
      }
      
    2. Oto przykładowy plik źródłowy JavaScript, który analizuje tę odpowiedź JSON i powoduje wspomniany wyżej błąd:

      ParseJSONResponse.js

      // Get the JSON response
      var jsonData = context.getVariable("response.content");
      print (jsonData);
      
      // Read the cars array
      for (var i = 0; i < jsonData.cars.length; i++)
        {
        print("name = " + jsonData.cars[i].name);
        print("count = " + jsonData.cars[i].count);
        }
      
    3. Po uważnym przyjrzeniu się kodowi JavaScript możesz zauważyć, że w wierszu 2 element response.content jest odczytywany/zapisywany w zmiennej jsonData jako zwykły ciąg znaków (w cudzysłowie).

    4. jsonData jest zwykłym ciągiem znaków, więc próba uzyskania dostępu do pliku cars z poziomu jsonData (jsonData.cars) nie będzie zdefiniowany.

    5. Następnie, gdy spróbujesz odczytać niezdefiniowaną właściwość length z parametru jsonData.cars, pojawi się błąd:

      "faultstring": "Execution of ParseJSONResponse failed with error: Javascript runtime error: \"TypeError: Cannot read property \"length\" from undefined. (ParseJSONResponse.js:6)\""
      

Rozdzielczość

Zadbaj o to, aby zawsze odczytywać dane JSON jako obiekt JSON za pomocą odpowiednich interfejsów API JSON.

Aby poprawić przykładowy kod JavaScript opisany powyżej, możesz użyć funkcji JSON.parse() na obiekcie response.content, aby pobrać go jako obiekt JSON. Potem możesz uzyskać dostęp do tablicy cars i przeprowadzać ją iteracje;

// Get the JSON response
var data = context.getVariable("response.content");
var jsonData = JSON.parse(data);
print (jsonData);

// Read the cars array
for (var i = 0; i < jsonData.cars.length; i++)
{
    print("name = " + jsonData.cars[i].name);
    print("count = " + jsonData.cars[i].count);
}

Błąd identyfikatora URI

Typ błędu URIError jest zgłaszany w przypadku użycia niedozwolonych znaków w funkcji identyfikatora URI. Jeśli na przykład przekazujesz do funkcji decodeURI identyfikator URI zawierający symbol procentu decodeURIComponent, wystąpi ten błąd.

Treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"URIError: error_description. (javascript_source_file_name:line_number)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "fault": {
        "faultstring": "Execution of URIDecode failed with error: Javascript runtime error: \"URIError: Malformed URI sequence. (URIDecode.js:2)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Diagnostyka

  1. Zidentyfikuj zasadę JavaScript, jej plik źródłowy, numer wiersza, w którym wystąpił błąd i jaki jest jego opis. Wszystkie te informacje można znaleźć tutaj: element faultstring odpowiedzi z błędem. Na przykład w poniższym ciąg znaków, nazwa zasady JavaScript to URIDecode</code JavaScript plik źródłowy to URIDecode.js, numer wiersza to 2, a opis błędu to Malformed URI sequence:

    "faultstring": "Execution of URIDecode failed with error: Javascript runtime error: \"URIError: Malformed URI sequence. (URIDecode.js:2)\""
    

    Opis błędu wskazuje, że w wierszu 2 pliku URIDecode.js używana jest nieprawidłowa sekwencja URI.

  2. Sprawdź plik źródłowy JavaScript i sprawdź, czy argument przekazany do którejkolwiek z funkcji URI zawiera niedozwolone znaki. Jeśli tak, to właśnie to jest przyczyną błędu.

    Oto przykładowy plik źródłowy JavaScript, który prowadzi do tego błędu:

    URIDecode.js

    var str = "75%-Completed";
    var decoded_str = decodeURIComponent(str);
    context.setVariable("decoded_str", decoded_str);
    

    W przykładowym kodzie JavaScriptu pokazanym powyżej zmienna str przekazana do decodeURIComponent() zawiera znak procentu, który jest uważany za nieprawidłowy znak. W związku z tym pojawia się błąd:

    "Execution of URIDecode failed with error: Javascript runtime error: \"URIError: Malformed URI sequence. (URIDecode.js:2)\""
    

Rozdzielczość

Upewnij się, że wszystkie znaki używane w funkcjach URI są legalne i dozwolone.

Aby rozwiązać problem z przykładowym kodem JavaScript opisanym powyżej, zakoduj symbol procentu. Przykład: %25:

var str = "75%25-Completed";
var decoded_str = decodeURIComponent(str);
context.setVariable("decoded_str", decoded_str);