Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
SkriptExecutionFailed
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:
- Sie verwenden ein ungültiges Datum, z. B. 31. September 2018, zusammen mit einigen Datums-APIs.
- Wenn Sie einen ungültigen Wert an numerische Methoden wie
Number.toPrecision()
,Number.tofixed()
oderNumber.toExponential()
übergeben. Wenn Sie beispielsweise in der MethodeNumber.toPrecision()
einen großen Wert wie 400 oder 500 übergeben, wird ein Bereichsfehler angezeigt. - 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
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 folgendenfaultstring
lautet der JavaScript-Richtlinienname beispielsweiseParseDate
, die JavaScript-QuelldateiParseDate.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)\""
Ü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 Variabledate
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
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 folgendenfaultstring
lautet der JavaScript-Richtlinienname beispielsweiseSetNumberPrecision
und die JavaScript-QuelldateiSetNumberPrecision.js
, also die Nummer der Zeile. Der Fehler ist 2 und die Fehlerbeschreibung lautetPrecision 400 out of range.
."faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js: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
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 Folgendenfaultstring
lautet der Name der JavaScript-RichtlinieComputeTotalPrice
, die entsprechende QuelldateiComputeTotalPrice.js
, die Zeilennummer, in der der Fehler aufgetreten ist,3
und der nicht definierte Variablenname lautetprice.
"faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
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);
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
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 folgendenfaultstring
lautet der JavaScript-Richtlinienname beispielsweiseParseJSONRequest
, die JavaScript-QuelldateiParseJSONRequest.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)\""
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 FunktionJSON.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. DieJSON.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 FunktiontoUpperCase()
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
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 folgendenfaultstring
lautet der JavaScript-Richtlinienname beispielsweiseConvertToUpperCase
, die QuelldateiConvertToUpperCase.js
, die Zeilennummer2
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.Ü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 FunktiontoUpperCase()(
wird anschließend auf dem Zahlenobjekt aufgerufen. Da die FunktiontoUpperCase()
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
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 folgendenfaultstring
ist beispielsweise der RichtliniennameParseJSONResponse
, die QuelldateiParseJSONResponse.js
, die Zeilennummer6
und die FehlerbeschreibungCannot 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.
Ü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:
Angenommen, Sie erhalten vom Backend-Server die folgende JSON-Antwort:
{ "cars": [ { "name":"Toyota", "count": 150 } { "name":"Honda", "count": 100 }, { "name":"Ford", "count": 75 } ] }
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); }
Bei der Prüfung des JavaScript-Codes müssen Sie beachten, dass in Zeile 2 der
response.content
in der VariablejsonData
als regulärer String gelesen und gespeichert wird (in Anführungszeichen).Weil
jsonData
eine reguläre Zeichenfolge ist, wenn Sie versuchen, aufcars
(jsonData.cars
) abjsonData
zuzugreifen, ist dies nicht definiert.Wenn Sie anschließend versuchen, das Attribut
length
ausjsonData.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
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 istURIDecode.js
, die Zeilennummer2
und die FehlerbeschreibungMalformed 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.Ü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 andecodeURIComponent()
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);