Fehlerbehebung bei Problemen mit der JavaScript-Richtlinie

Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.

ScriptExecutionFailed

Fehlercode

steps.javascript.ScriptExecutionFailed

Fehlerantworttext

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

Arten von Fehlern und mögliche Ursachen

Die JavaScript-Richtlinie kann viele verschiedene Arten von ScriptExecutionFailed-Fehlern auslösen. Einige der am häufigsten auftretenden Fehler sind in der folgenden Tabelle aufgeführt:

Art des Fehlers Ursache
Bereichsfehler Ein RangeError wird ausgelöst, wenn Sie eine Zahl verwenden, die außerhalb des Bereichs der zulässigen Werte liegt.
Referenzfehler Ein ReferenceError wird ausgelöst, wenn Sie eine Variable verwenden, die nicht deklariert wurde.
Syntaxfehler Ein SyntaxError wird ausgelöst, wenn Sie versuchen, Code mit einem Syntaxfehler zu bewerten.
Typfehler Ein TypeError wird ausgelöst, wenn Sie einen Vorgang verwenden, der außerhalb der erwarteten Typenbereichs liegt.
URI-Fehler Ein URIError wird ausgelöst, wenn Sie in einer URI-Funktion unzulässige Zeichen verwenden.

Bereichsfehler

Der Fehlertyp RangeError wird ausgelöst, wenn Sie an einem Wert arbeiten oder einen Wert an eine Funktion übergeben, die nicht im Satz oder Bereich zulässiger Werte enthalten ist.

Dieser Fehler tritt beispielsweise in folgenden Fällen auf:

  1. Sie verwenden ein ungültiges Datum, z. B. 31. September 2018, zusammen mit einigen Datums-APIs.
  2. Wenn Sie einen ungültigen Wert an numerische Methoden wie Number.toPrecision(), Number.tofixed() oder Number.toExponential() übergeben. Wenn Sie beispielsweise in der Methode Number.toPrecision() einen großen Wert wie 400 oder 500 übergeben, wird ein Bereichsfehler angezeigt.
  3. Sie erstellen ein Array mit einer ungültigen Länge.

Fehlerantworttext

{
    "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"
        }
    }
}

Hinweis: Die Diagnose und die Auflösung von Bereichsfehlern hängen von der Fehlermeldung des JavaScript-Fehlers ab. Einige Beispiele finden Sie weiter unten.

Beispiel 1: Ungültiges Datum

Beispieltext für eine Fehlerantwort

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

Diagnose

  1. Geben Sie die JavaScript-Richtlinie, die Quelldatei, die Zeilennummer, in der der Fehler aufgetreten ist, sowie die Fehlerbeschreibung an. Alle diese Informationen finden Sie im Element faultstring der Fehlerantwort. Im folgenden faultstring lautet der JavaScript-Richtlinienname beispielsweise ParseDate, die JavaScript-Quelldatei ParseDate.js und die Zeile, in der der Fehler aufgetreten ist, 2 sowie die Fehlerbeschreibung: Date is invalid:

    "faultstring": "Execution of ParseDate failed with error: Javascript runtime error: \"RangeError: Date is invalid. (ParseDate.js:2)\""
    
  2. Überprüfen Sie die JavaScript-Quelldatei (in Schritt 1 oben identifiziert) und prüfen Sie, ob in der im Fehler angegebenen Zeilennummer ein ungültiges Datum angegeben ist oder ob die in der Zeilennummer verwendete Variable ein ungültiges Datum enthält. Wenn ein ungültiges Datum verwendet wird, ist dies die Ursache des Fehlers.

    Dies ist ein Beispiel für eine JavaScript-Quelldatei, die zu diesem Fehler führt:

    ParseDate.js

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

    In diesem Beispiel wird die Variable date in Zeile 2 verwendet. Bei der Überprüfung der Quelldatei sehen Sie, dass die Variable date mit einem ungültigen Datum angegeben ist: 2018-09-31T11:19:08.402Z. Dieses Datum ist ungültig, da der September keine 31 Tage hat.

    Hinweis: Das in diesem Beispiel verwendete ISO-8601-Format ist: YYYY-MM-DDTHH:mm:ss.sssZ.

Lösung

Achten Sie darauf, immer ein gültiges Datum zu verwenden, wenn Sie Date APIs im JavaScript-Code verwenden.

Um den oben gezeigten JavaScript-Beispielcode zu korrigieren, können Sie das Datum wie unten dargestellt auf Sept 30 2018 festlegen:

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

Beispiel 2: Ungültige Zahl an Präzisions-APIs übergeben

Beispieltext für eine Fehlerantwort

{
    "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"
        }
    }
}

Diagnose

  1. Geben Sie die JavaScript-Richtlinie, die Quelldatei, die Zeilennummer, in der der Fehler aufgetreten ist, sowie die Fehlerbeschreibung an. Alle diese Informationen finden Sie im Element faultstring der Fehlerantwort. Im folgenden faultstring lautet der JavaScript-Richtlinienname beispielsweise SetNumberPrecision und die JavaScript-Quelldatei SetNumberPrecision.js, also die Nummer der Zeile. Der Fehler ist 2 und die Fehlerbeschreibung lautet 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. Untersuchen Sie die JavaScript-Quelldatei (siehe Schritt 1 oben). Wenn die große Zahl, die als Teil der Fehlerbeschreibung in der spezifischen Zeilennummer erwähnt wird, verwendet wird, so ist das der Grund für den Fehler.

    Dies ist ein Beispiel für eine JavaScript-Quelldatei, die zu diesem Fehler führt:

    SetNumberPrecision.js

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

    In diesem Beispiel sehen Sie, dass in Zeile 2 ein hoher Wert von 400 verwendet wird. Da Sie die Genauigkeit nicht auf eine so große Anzahl von Ziffern festlegen können, wird der folgende Fehler ausgegeben:

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

Lösung

Achten Sie darauf, dass die in der Methode toPrecision() verwendete Zahl innerhalb der Gruppe der zulässigen Werte liegt.

Um das Problem mit dem oben beschriebenen JavaScript-Beispiel zu beheben, legen Sie die Anzahl der signifikanten Stellen auf 2 fest.

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

Referenzfehler

Der Fehlertyp ReferenceError wird ausgelöst, wenn eine nicht definierte Variable in JavaScript verwendet oder referenziert wird.

Fehlerantworttext

{
    "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"
        }
    }
}

Beispieltext für eine Fehlerantwort

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

Diagnose

  1. Geben Sie die JavaScript-Richtlinie, die Quelldatei und die Zeilennummer an, in der auf die nicht definierte Variable verwiesen wird. Alle diese Informationen finden Sie im Element faultstring der Fehlerantwort. Beispiel: Im Folgenden faultstring lautet der Name der JavaScript-Richtlinie ComputeTotalPrice, die entsprechende Quelldatei ComputeTotalPrice.js, die Zeilennummer, in der der Fehler aufgetreten ist, 3 und der nicht definierte Variablenname lautet price.

    "faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
    
  2. Prüfen Sie die Zeilennummer in der JavaScript-Quelldatei und prüfen Sie, ob auf die in Schritt 1 identifizierte nicht definierte Variable verwiesen wird. Der folgende JavaScript-Code verweist beispielsweise auf die nicht definierte Variable price in Zeile 3, die dem entspricht, was im Fehlerstring enthalten ist:

    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. Prüfen Sie, ob die jeweilige Variable im JavaScript-Code definiert ist. Wenn die Variable nicht definiert ist, ist dies die Ursache des Fehlers.

    Im oben gezeigten Beispielskript wird die nicht deklarierte/definierte Variable price verwendet. Daher wird folgender Fehler angezeigt:

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

Lösung

Achten Sie darauf, dass alle Variablen, auf die im JavaScript-Code verwiesen wird, ordnungsgemäß definiert sind.

Definieren Sie vor der Verwendung den variablen Preis, um das Problem mit dem oben gezeigten JavaScript-Beispiel zu beheben. Beispiel:

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);

Syntaxfehler

Der Fehlertyp SyntaxError wird ausgelöst, wenn die JavaScript-Engine Tokens erkennt oder eine Tokenreihenfolge erfolgt, die nicht der Syntax der Sprache entspricht, oder wenn eine ungültige Formateingabe an die Parser-APIs übergeben wird, z. B. JSON-/XML-Parsen.

Wenn beispielsweise eine ungültige oder fehlerhafte JSON-Nutzlast als Eingabe an die in der JavaScript-Richtlinie verwendete JSON.parse API übergeben wird, erhalten Sie diesen Fehler.

Fehlerantworttext

{
    "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"
        }
    }
}

Beispieltext für eine Fehlerantwort

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

Diagnose

  1. Geben Sie die JavaScript-Richtlinie, die Quelldatei, die Zeilennummer, in der der Fehler aufgetreten ist, sowie die Fehlerbeschreibung an. Alle diese Informationen finden Sie im Element faultstring der Fehlerantwort. Im folgenden faultstring lautet der JavaScript-Richtlinienname beispielsweise ParseJSONRequest, die JavaScript-Quelldatei ParseJSONRequest.js und die Zeile, in der der Fehler aufgetreten ist, 2 sowie die Fehlerbeschreibung: Unexpected token:

    "faultstring": "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
    
  2. Prüfen Sie die Zeilennummer 2 in der JavaScript-Quelldatei (siehe Schritt 1 oben) und überprüfen Sie, welche Operation durchgeführt wird. Wenn eine JSON.parse()-Funktion ausgeführt wird, prüfen Sie den an die Funktion übergebenen Eingabeparameter. Wenn der Eingabeparameter ungültig oder fehlerhaft ist, ist dies die Ursache des Fehlers.

    Der folgende JavaScript-Beispielcode führt zu diesem Fehler:

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

    In diesem Beispiel wird die an den API-Proxy übergebene Anfragenutzlast (request.content) als Eingabe für die Funktion JSON.parse() verwendet.

    Hier ist der Beispiel-API-Aufruf, der zeigt, wie die Anfrage übergeben wurde:

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

    In der obigen Anfrage wird die folgende XML-Nutzlast an den API-Proxy <city>Bangalore</city> übergeben. Die JSON.parse API erwartet, dass eine gültige JSON-Eingabe übergeben wird. Da jedoch eine XML-Nutzlast übergeben wird, schlägt die folgende Fehlermeldung fehl:

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

Lösung

Achten Sie darauf, eine gültige Eingabe an die im JavaScript-Code verwendeten Parsing-APIs zu übergeben.

Um das Problem mit der oben erläuterten Beispielrichtlinie zu beheben, übergeben Sie eine gültige JSON-Nutzlast-Anfrage so:

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

Typenfehler

Der Fehlertyp TypeError wird in folgenden Fällen ausgegeben:

  • Ein Operand oder Argument, das an eine Funktion übergeben wird, ist nicht mit dem von diesem Operator oder der Funktion erwarteten Typ kompatibel.
  • Eine Funktion wird für ein leeres, nicht definiertes oder falsches Objekt aufgerufen.
  • Auf ein Attribut wird von einem Nullwert, nicht definiertem oder falschem Objekt zugegriffen.

Beispielsweise wird ein Fehler ausgegeben:

  • Wenn Sie versuchen, die Funktion toUpperCase() für eine Zahl aufzurufen Dies liegt daran, dass die Funktion toUpperCase() nur für Stringobjekte aufgerufen werden kann.
  • Wenn Sie versuchen, eine Eigenschaft aus einem Null- oder nicht definierten Objekt zu lesen

Fehlerantworttext

{
    "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"
        }
    }
}

Beispiel 1: Funktion für das falsche Objekt aufrufen

Wenn Sie versuchen, eine Funktion für ein nicht unterstütztes Objekt aufzurufen, wird dieser Fehler angezeigt. Wenn Sie beispielsweise versuchen, die Funktion toUpperCase() für eine Zahl aufzurufen, erhalten Sie diese Fehlermeldung. Der Grund dafür ist, dass die Funktion toUpperCase() nur für Stringobjekte aufgerufen werden kann.

Beispieltext für eine Fehlerantwort

{
    "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"
        }
    }
}

Diagnose

  1. Geben Sie die JavaScript-Richtlinie, die Quelldatei, die Zeilennummer, in der der Fehler aufgetreten ist, sowie die Fehlerbeschreibung an. Alle diese Informationen finden Sie im Element faultstring der Fehlerantwort. Im folgenden faultstring lautet der JavaScript-Richtlinienname beispielsweise ConvertToUpperCase, die Quelldatei ConvertToUpperCase.js, die Zeilennummer 2 und die Fehlerbeschreibung **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)\""
    

    Die Fehlerbeschreibung gibt an, dass Sie die Funktion toUpperCase() für ein Objekt aufrufen, dessen numerischer Wert 100 ist.

  2. Überprüfen Sie die JavaScript-Quelldatei und prüfen Sie, ob die Funktion toUpperCase() für ein Objekt aufgerufen wird, dessen numerischer Wert 100 in Zeile 2 (identifiziert in Schritt 1 oben) ist. Wenn ja, ist dies die Ursache des Fehlers.

    Dies ist ein Beispiel für eine JavaScript-Quelldatei, die zu diesem Fehler führt:

    ConvertToUpperCase.js

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

    Im oben gezeigten JavaScript-Code wird die Variable number auf den Wert 100 gesetzt. Die Funktion toUpperCase()( wird anschließend auf dem Zahlenobjekt aufgerufen. Da die Funktion toUpperCase() nur für Stringobjekte aufgerufen werden kann, erhalten Sie folgende Fehlermeldung:

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

Lösung

Verwenden Sie bei gültigen Objekten immer Funktionen wie toUpperCase().

Zum Korrigieren des oben gezeigten Beispiels können Sie eine Stringvariable erstellen und dann die toUpperCase()-Funktion für einen String aufrufen:

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

Beispiel 2: Eigenschaft eines nicht definierten Objekts kann nicht gelesen werden

Wenn Sie versuchen, auf ein Attribut von einem nicht definierten Objekt zuzugreifen oder es zu lesen, wird dieser Fehler angezeigt. Dieser Fehler kann beispielsweise auftreten, wenn Sie versuchen, auf Daten aus einem Objekt in einem Array zuzugreifen, das Objekt jedoch nicht definiert ist. Eine ausführliche Erläuterung finden Sie unten.

Beispieltext für eine Fehlerantwort

{
    "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"
        }
    }
}

Diagnose

  1. Identifizieren Sie die JavaScript-Richtlinie, die Quelldatei, die Nummer der Zeile, in der der Fehler aufgetreten ist, sowie die Fehlerbeschreibung. Alle diese Informationen finden Sie im Element faultstring der Fehlerantwort. Im folgenden faultstring ist beispielsweise der Richtlinienname ParseJSONResponse, die Quelldatei ParseJSONResponse.js, die Zeilennummer 6 und die Fehlerbeschreibung 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)\""
    

    Der Fehler gibt an, dass das Attribut Länge nicht aus einem nicht definierten Objekt gelesen werden kann.

  2. Überprüfen Sie die Zeilennummer in der JavaScript-Quelldatei (identifiziert in Schritt 1 oben) und prüfen Sie, ob das Objekt einen gültigen Wert hat oder nicht definiert ist. Sie müssen möglicherweise die gesamte Quelldatei lesen und verstehen, um zu bestimmen, wie das Objekt definiert oder abgeleitet wurde, und dann entscheiden, warum das Objekt nicht definiert ist. Wenn Sie feststellen, dass das Objekt tatsächlich nicht definiert ist und Sie versuchen, auf die Länge der Eigenschaft zuzugreifen, ist dies die Ursache des Fehlers.

    Sehen wir uns zur Veranschaulichung ein Problem an:

    1. Angenommen, Sie erhalten vom Backend-Server die folgende JSON-Antwort:

      {
          "cars": [
             { "name":"Toyota", "count": 150 }
             { "name":"Honda", "count": 100 },
             { "name":"Ford", "count": 75 }
          ]
      }
      
    2. Im Folgenden sehen Sie eine JavaScript-Quelldatei, die diese JSON-Antwort analysiert und zum oben genannten Fehler führt:

      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. Bei der Prüfung des JavaScript-Codes müssen Sie beachten, dass in Zeile 2 der response.content in der Variable jsonData als regulärer String gelesen und gespeichert wird (in Anführungszeichen).

    4. Weil jsonData eine reguläre Zeichenfolge ist, wenn Sie versuchen, auf cars (jsonData.cars) ab jsonData zuzugreifen, ist dies nicht definiert.

    5. Wenn Sie anschließend versuchen, das Attribut length aus jsonData.cars zu lesen, das nicht definiert ist, wird folgende Fehlermeldung angezeigt:

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

Lösung

Verwenden Sie immer die JSON-Daten als JSON-Objekt mit den relevanten JSON APIs.

Zum Beheben des oben beschriebenen JavaScript-Beispiels können Sie die Funktion JSON.parse() für das Objekt response.content verwenden, um es als JSON-Objekt abzurufen. Danach können Sie auf das Array cars zugreifen und das Array durchlaufen.

// 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);
}

URI-Fehler

Der Fehlertyp URIError wird ausgegeben, wenn Sie in einer URI-Funktion unzulässige Zeichen verwenden. Wenn Sie beispielsweise einen URI mit einem Prozentzeichen an die Funktionen decodeURI oder decodeURIComponent übergeben, erhalten Sie diesen Fehler.

Fehlerantworttext

{
    "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"
        }
    }
}

Beispieltext für eine Fehlerantwort

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

Diagnose

  1. Identifizieren Sie die JavaScript-Richtlinie, die Quelldatei, die Nummer der Zeile, in der der Fehler aufgetreten ist, sowie die Fehlerbeschreibung. Alle diese Informationen finden Sie im Fehlerstring-Element der Fehlerantwort. Im folgenden Fehlercode lautet der JavaScript-Richtlinienname URIDecode</code, die JavaScript-Quelldatei ist URIDecode.js, die Zeilennummer 2 und die Fehlerbeschreibung Malformed URI sequence:

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

    Die Fehlerbeschreibung gibt an, dass in Zeile 2 von URIDecode.js eine fehlerhafte URI-Sequenz verwendet wird.

  2. Überprüfen Sie die JavaScript-Quelldatei und prüfen Sie, ob das an eine der URI-Funktionen übergebene Argument unzulässige Zeichen enthält. Wenn ja, ist das die Fehlerursache.

    Dies ist ein Beispiel für eine JavaScript-Quelldatei, die zu diesem Fehler führt:

    URIDecode.js

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

    Im oben gezeigten JavaScript-Beispielcode enthält die Variable str übergeben an decodeURIComponent() ein Prozentsymbol, das als unzulässiges Zeichen angesehen wird. Daher wird folgende Fehlermeldung angezeigt:

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

Lösung

Achten Sie darauf, dass alle Zeichen in URI-Funktionen zulässig und erlaubt sind.

Verwenden Sie zur Behebung des Problems das oben erwähnte JavaScript-Beispiel. Beispiel %25:

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