জাভাস্ক্রিপ্ট নীতি রানটাইম ত্রুটি সমস্যা সমাধান

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

স্ক্রিপ্ট এক্সিকিউশন ব্যর্থ হয়েছে৷

ত্রুটি কোড

steps.javascript.ScriptExecutionFailed

ত্রুটি প্রতিক্রিয়া বডি

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

ত্রুটির প্রকার এবং সম্ভাব্য কারণ

জাভাস্ক্রিপ্ট নীতি বিভিন্ন ধরনের ScriptExecutionFailed ত্রুটি নিক্ষেপ করতে পারে। আরও কিছু সাধারণভাবে দেখা ত্রুটিগুলি নীচের সারণীতে তালিকাভুক্ত করা হয়েছে:

ত্রুটির ধরন কারণ
পরিসীমা ত্রুটি একটি RangeError নিক্ষেপ করা হয় যদি আপনি এমন একটি সংখ্যা ব্যবহার করেন যা আইনি মানের সীমার বাইরে।
রেফারেন্স ত্রুটি আপনি যদি ঘোষণা করা হয়নি এমন একটি পরিবর্তনশীল (রেফারেন্স) ব্যবহার করেন তবে একটি রেফারেন্স ত্রুটি নিক্ষেপ করা হয়।
সিনট্যাক্স ত্রুটি আপনি যদি একটি সিনট্যাক্স ত্রুটি দিয়ে কোড মূল্যায়ন করার চেষ্টা করেন তবে একটি সিনট্যাক্স ত্রুটি নিক্ষেপ করা হয়।
টাইপ ত্রুটি আপনি যদি প্রত্যাশিত প্রকারের সীমার বাইরে এমন একটি অপারেশন ব্যবহার করেন তবে একটি TypeError নিক্ষেপ করা হয়।
URI ত্রুটি আপনি একটি URI ফাংশনে অবৈধ অক্ষর ব্যবহার করলে একটি URIError নিক্ষেপ করা হয়।

পরিসীমা ত্রুটি

ত্রুটির ধরন RangeError নিক্ষেপ করা হয় যখন আপনি একটি মান পরিচালনা করেন বা একটি ফাংশনে একটি মান পাস করেন যা অনুমোদিত মানগুলির সেট বা পরিসরে নেই।

উদাহরণস্বরূপ, এই ত্রুটি নিম্নলিখিত পরিস্থিতিতে নিক্ষেপ করা হয়:

  1. আপনি যদি কিছু তারিখ API-এর সাথে 31শে সেপ্টেম্বর 2018-এর মতো একটি অবৈধ তারিখ ব্যবহার করেন।
  2. আপনি যদি সংখ্যাসূচক পদ্ধতিতে একটি অবৈধ মান পাস করেন যেমন Number.toPrecision() , Number.tofixed() , বা Number.toExponential() । উদাহরণস্বরূপ, ধরুন আপনি Number.toPrecision() পদ্ধতিতে 400 বা 500 এর মতো একটি বড় মান পাস করেন আপনি একটি পরিসর ত্রুটি দেখতে পাবেন।
  3. আপনি যদি অবৈধ দৈর্ঘ্য সহ একটি অ্যারে তৈরি করেন।

ত্রুটি প্রতিক্রিয়া বডি

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

দ্রষ্টব্য: পরিসীমা ত্রুটির নির্ণয় এবং সমাধান জাভাস্ক্রিপ্ট নীতি দ্বারা নিক্ষিপ্ত সঠিক ত্রুটি বার্তার উপর নির্ভর করে। আপনার রেফারেন্সের জন্য কয়েকটি উদাহরণ নীচে বর্ণিত হয়েছে।

উদাহরণ 1: অবৈধ তারিখ

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

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

রোগ নির্ণয়

  1. জাভাস্ক্রিপ্ট নীতি, এর সোর্স ফাইল, লাইন নম্বর যেখানে ত্রুটি ঘটেছে এবং ত্রুটি বিবরণ সনাক্ত করুন৷ আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে এই সমস্ত তথ্য খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, জাভাস্ক্রিপ্ট নীতির নাম হল ParseDate , JavaScript সোর্স ফাইলটি ParseDate.js , যে লাইন নম্বরে ত্রুটি ঘটেছে সেটি হল 2 এবং ত্রুটির বিবরণ হল Date is invalid :

    "faultstring": "Execution of ParseDate failed with error: Javascript runtime error: \"RangeError: Date is invalid. (ParseDate.js:2)\""
    
  2. জাভাস্ক্রিপ্ট সোর্স ফাইলটি পরীক্ষা করুন (উপরের ধাপ # 1 এ শনাক্ত করা হয়েছে) এবং ত্রুটিতে নির্দিষ্ট লাইন নম্বরে একটি অবৈধ তারিখ ব্যবহার করা হচ্ছে কিনা বা লাইন নম্বরে ব্যবহৃত পরিবর্তনশীলটির একটি অবৈধ তারিখ আছে কিনা তা পরীক্ষা করুন। যদি একটি অবৈধ তারিখ ব্যবহার করা হয়, তাহলে এটি ত্রুটির কারণ।

    এখানে একটি নমুনা জাভাস্ক্রিপ্ট সোর্স ফাইল যা এই ত্রুটির দিকে নিয়ে যায়:

    ParseDate.js

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

    এই উদাহরণে, লাইন নম্বর 2-এ একটি পরিবর্তনশীল date ব্যবহার করা হয়েছে। উৎস ফাইলটি পরীক্ষা করে আপনি দেখতে পাবেন যে date পরিবর্তনশীলটি একটি অবৈধ তারিখের সাথে সেট করা হয়েছে: 2018-09-31T11:19:08.402Z. এই তারিখটি অবৈধ কারণ সেপ্টেম্বরে 31 দিন নেই৷

    দ্রষ্টব্য: এই উদাহরণে ব্যবহৃত ISO-8601 ফর্ম্যাট হল: YYYY-MM-DDTHH:mm:ss.sssZ

রেজোলিউশন

নিশ্চিত করুন যে জাভাস্ক্রিপ্ট কোডে তারিখ API ব্যবহার করার সময় আপনি সর্বদা একটি বৈধ তারিখ ব্যবহার করছেন৷

উপরে দেখানো উদাহরণ জাভাস্ক্রিপ্ট কোড ঠিক করতে, আপনি নীচের হিসাবে Sept 30 2018 তারিখ সেট করতে পারেন:

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

উদাহরণ 2: সঠিক এপিআই-এ অবৈধ নম্বর পাস করা হয়েছে

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

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

রোগ নির্ণয়

  1. জাভাস্ক্রিপ্ট নীতি, এর সোর্স ফাইল, লাইন নম্বর যেখানে ত্রুটি ঘটেছে এবং ত্রুটি বিবরণ সনাক্ত করুন৷ আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে এই সমস্ত তথ্য খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, জাভাস্ক্রিপ্ট নীতির নাম হল SetNumberPrecision , জাভাস্ক্রিপ্ট সোর্স ফাইল হল SetNumberPrecision.js , যে লাইন নম্বরে ত্রুটি ঘটেছে সেটি হল 2 এবং ত্রুটির বিবরণ হল 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. জাভাস্ক্রিপ্ট সোর্স ফাইলটি পরীক্ষা করুন (উপরের ধাপ # 1 এ চিহ্নিত)। যদি ত্রুটি বর্ণনার অংশ হিসাবে উল্লেখ করা বড় সংখ্যাটি নির্দিষ্ট লাইন নম্বরে ব্যবহার করা হয়, তবে এটি ত্রুটির কারণ।

    এখানে একটি নমুনা জাভাস্ক্রিপ্ট সোর্স ফাইল যা এই ত্রুটির দিকে নিয়ে যায়:

    SetNumberPrecision.js

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

    এই উদাহরণে, লক্ষ্য করুন যে 2 নম্বর লাইনে 400-এর একটি বড় মান ব্যবহার করা হয়েছে। কারণ আপনি এত বড় সংখ্যায় নির্ভুলতা সেট করতে পারবেন না, আপনি নীচের ত্রুটিটি পাবেন:

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

রেজোলিউশন

নিশ্চিত করুন যে toPrecision() পদ্ধতিতে ব্যবহৃত সংখ্যাটি অনুমোদিত মানগুলির সেটের মধ্যে রয়েছে।

উপরে বর্ণিত জাভাস্ক্রিপ্টের উদাহরণ দিয়ে সমস্যাটি সমাধান করতে, উল্লেখযোগ্য সংখ্যার সংখ্যা 2 এ সেট করুন যা বৈধ:

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

রেফারেন্স ত্রুটি

আপনার জাভাস্ক্রিপ্টে একটি অনির্ধারিত ভেরিয়েবল ব্যবহার করা হলে (রেফারেন্স করা) বা চালানো হলে ReferenceError এর ধরনটি নিক্ষেপ করা হয়।

ত্রুটি প্রতিক্রিয়া বডি

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

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

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

রোগ নির্ণয়

  1. জাভাস্ক্রিপ্ট নীতি, এর উত্স ফাইল এবং লাইন নম্বর সনাক্ত করুন যেখানে অনির্ধারিত ভেরিয়েবলটি উল্লেখ করা হয়েছে। আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে এই সমস্ত তথ্য খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, জাভাস্ক্রিপ্ট নীতির নাম ComputeTotalPrice , সংশ্লিষ্ট উৎস ফাইলটি ComputeTotalPrice.js , লাইন নম্বর যেখানে ত্রুটি ঘটেছে 3 এবং অনির্ধারিত পরিবর্তনশীল নাম হল price.

    "faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
    
  2. জাভাস্ক্রিপ্ট সোর্স ফাইলে লাইন নম্বর পরীক্ষা করুন এবং উপরের ধাপ # 1 এ চিহ্নিত অনির্ধারিত ভেরিয়েবলটি উল্লেখ করা হচ্ছে কিনা তা যাচাই করুন। উদাহরণস্বরূপ, নিম্নলিখিত জাভাস্ক্রিপ্ট কোডটি লাইন 3-তে অনির্ধারিত পরিবর্তনশীল price উল্লেখ করে, যা ফল্টস্ট্রিং-এ যা আছে তার সাথে মেলে:

    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. জাভাস্ক্রিপ্ট কোডের মধ্যে নির্দিষ্ট ভেরিয়েবলটি সংজ্ঞায়িত করা হয়েছে কিনা তা পরীক্ষা করুন। যদি ভেরিয়েবলটি সংজ্ঞায়িত না হয়, তবে এটি ত্রুটির কারণ।

    উপরে দেখানো উদাহরণ স্ক্রিপ্টে, অঘোষিত/সংজ্ঞায়িত price পরিবর্তনশীল ব্যবহার করা হয়েছে; অতএব, আপনি নীচের ত্রুটি দেখতে পাবেন:

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

রেজোলিউশন

নিশ্চিত করুন যে JavaScript কোডে উল্লেখ করা সমস্ত ভেরিয়েবল সঠিকভাবে সংজ্ঞায়িত করা হয়েছে।

উপরে দেখানো জাভাস্ক্রিপ্টের উদাহরণ দিয়ে সমস্যাটি সমাধান করতে, এটি ব্যবহার করার আগে পরিবর্তনশীল মূল্য নির্ধারণ করুন। যেমন:

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

সিনট্যাক্স ত্রুটি

যখন জাভাস্ক্রিপ্ট ইঞ্জিন টোকেন বা টোকেন অর্ডারের মুখোমুখি হয় যেটি ভাষার সিনট্যাক্সের সাথে সামঞ্জস্যপূর্ণ নয়, বা যখন JSON/XML পার্সের মতো পার্সার APIগুলিতে একটি অবৈধ বিন্যাস ইনপুট পাস করা হয় তখন SyntaxError টাইপ করা হয়৷

উদাহরণস্বরূপ, যদি জাভাস্ক্রিপ্ট নীতির মধ্যে ব্যবহৃত JSON.parse API-তে ইনপুট হিসাবে অবৈধ বা বিকৃত JSON পেলোড পাস করা হয়, তাহলে আপনি এই ত্রুটিটি পাবেন।

ত্রুটি প্রতিক্রিয়া বডি

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

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

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

রোগ নির্ণয়

  1. জাভাস্ক্রিপ্ট নীতি, এর সোর্স ফাইল, লাইন নম্বর যেখানে ত্রুটি ঘটেছে এবং ত্রুটি বিবরণ সনাক্ত করুন৷ আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে এই সমস্ত তথ্য খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, জাভাস্ক্রিপ্ট নীতির নাম ParseJSONRequest , JavaScript সোর্স ফাইলটি ParseJSONRequest.js , যে লাইন নম্বরে ত্রুটি ঘটেছে সেটি হল 2 এবং ত্রুটির বিবরণ হল Unexpected token :

    "faultstring": "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
    
  2. জাভাস্ক্রিপ্ট সোর্স ফাইলে লাইন নম্বর 2 পরীক্ষা করুন (উপরে ধাপ # 1 এ চিহ্নিত করা হয়েছে) এবং কী অপারেশন করা হচ্ছে তা পরীক্ষা করুন। যদি একটি JSON.parse() ফাংশন নির্বাহ করা হয় তবে এতে পাস করা ইনপুট প্যারামিটারটি পরীক্ষা করুন। যদি ইনপুট প্যারামিটারটি বৈধ না হয় বা বিকৃত JSON হয়, তাহলে এটি ত্রুটির কারণ।

    এখানে একটি নমুনা জাভাস্ক্রিপ্ট কোড যা এই ত্রুটির দিকে পরিচালিত করে:

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

    এই উদাহরণে, API প্রক্সিতে পাঠানো রিকোয়েস্ট পেলোড ( request.content ) JSON.parse() ফাংশনে ইনপুট হিসেবে ব্যবহৃত হয়।

    এখানে নমুনা API কল যা দেখায় কিভাবে অনুরোধ পাস করা হয়েছে:

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

    উপরের অনুরোধে, নিম্নলিখিত XML পেলোডটি API প্রক্সি <city>Bangalore</city> এ পাঠানো হয়েছে। JSON.parse API আশা করে যে একটি বৈধ JSON পাস হবে কিন্তু এর পরিবর্তে একটি XML পেলোড পাস হওয়ার কারণে এটি নিম্নোক্ত ত্রুটির সাথে ব্যর্থ হয়:

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

রেজোলিউশন

JavaScript কোডে ব্যবহৃত পার্স API-এ বৈধ ইনপুট দিতে ভুলবেন না।

উপরে আলোচনা করা নমুনা নীতির সাহায্যে সমস্যাটি সমাধান করতে, নিম্নলিখিতভাবে একটি বৈধ JSON পেলোড অনুরোধ পাস করুন:

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

টাইপ ত্রুটি

ত্রুটি টাইপ TypeError নিক্ষেপ করা হয় যখন:

  • একটি ফাংশনে পাস করা একটি অপারেন্ড বা আর্গুমেন্ট সেই অপারেটর বা ফাংশন দ্বারা প্রত্যাশিত প্রকারের সাথে বেমানান৷
  • একটি শূন্য, অনির্ধারিত বা ভুল বস্তুর উপর একটি ফাংশন আহ্বান করা হয়।
  • একটি নাল, অনির্ধারিত বা ভুল বস্তু থেকে একটি সম্পত্তি অ্যাক্সেস করা হয়।

উদাহরণস্বরূপ, একটি টাইপ ত্রুটি নিক্ষেপ করা হয়:

  • আপনি যদি একটি নম্বরে toUpperCase() ফাংশনটি চালু করার চেষ্টা করেন। এর কারণ হল toUpperCase() ফাংশন শুধুমাত্র স্ট্রিং অবজেক্টে চালু করা যেতে পারে।
  • আপনি যদি একটি নাল বা অনির্ধারিত বস্তু থেকে একটি সম্পত্তি পড়ার চেষ্টা করেন।

ত্রুটি প্রতিক্রিয়া বডি

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

উদাহরণ 1: ভুল বস্তুতে একটি ফাংশন আহ্বান করা

আপনি যদি একটি অসমর্থিত বস্তুতে একটি ফাংশন আহ্বান করার চেষ্টা করেন, তাহলে আপনি এই ত্রুটিটি পাবেন। উদাহরণস্বরূপ, যদি আপনি একটি নম্বরে toUpperCase() ফাংশনটি চালু করার চেষ্টা করেন তবে আপনি ত্রুটি পাবেন। এর কারণ হল toUpperCase() ফাংশন শুধুমাত্র স্ট্রিং অবজেক্টে চালু করা যেতে পারে।

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

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

রোগ নির্ণয়

  1. জাভাস্ক্রিপ্ট নীতি, এর সোর্স ফাইল, লাইন নম্বর যেখানে ত্রুটি ঘটেছে এবং ত্রুটি বিবরণ সনাক্ত করুন৷ আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে এই সমস্ত তথ্য খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, জাভাস্ক্রিপ্ট নীতির নাম হল ConvertToUpperCase , উৎস ফাইলটি হল ConvertToUpperCase.js , লাইন নম্বর হল 2 এবং ত্রুটির বিবরণ হল ** 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)\""
    

    ত্রুটির বিবরণটি নির্দেশ করে যে আপনি একটি বস্তুতে toUpperCase() ফাংশনটি চালু করছেন যার সংখ্যাসূচক মান 100।

  2. জাভাস্ক্রিপ্ট সোর্স ফাইলটি পরীক্ষা করুন এবং যাচাই করুন যে আপনি একটি বস্তুতে toUpperCase() ফাংশনটি চালু করছেন কিনা যার সাংখ্যিক মান 2 নম্বর লাইনে 100 (উপরের ধাপ # 1 এ চিহ্নিত করা হয়েছে)। যদি হ্যাঁ, তাহলে এটি ত্রুটির কারণ।

    এখানে একটি নমুনা জাভাস্ক্রিপ্ট সোর্স ফাইল যা এই ত্রুটির দিকে নিয়ে যায়:

    ConvertToUpperCase.js

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

    উপরে দেখানো জাভাস্ক্রিপ্ট কোডে, ভেরিয়েবল number 100 এর মান সহ সেট করা হয়েছে। পরবর্তীতে toUpperCase()( ফাংশনটি নম্বর অবজেক্টে চালু করা হয়। যেহেতু toUpperCase() ফাংশনটি শুধুমাত্র স্ট্রিং অবজেক্টে চালু করা যেতে পারে, আপনি ত্রুটিটি পাবেন:

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

রেজোলিউশন

সর্বদা বৈধ বস্তুতে toUpperCase() এর মতো ফাংশন ব্যবহার করুন।

উপরে দেখানো উদাহরণটি সংশোধন করতে, আপনি একটি স্ট্রিং ভেরিয়েবল তৈরি করতে পারেন এবং তারপর একটি স্ট্রিং-এ toUpperCase() ফাংশনটি চালু করতে পারেন:

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

উদাহরণ 2: একটি অনির্ধারিত বস্তু থেকে সম্পত্তি পড়তে পারে না

আপনি যদি একটি অনির্ধারিত বস্তু থেকে একটি সম্পত্তি অ্যাক্সেস/পড়তে চেষ্টা করেন, তাহলে আপনি এই ত্রুটিটি পাবেন। উদাহরণস্বরূপ, এই ত্রুটিটি ঘটতে পারে যখন আপনি একটি অ্যারের একটি বস্তু থেকে ডেটা অ্যাক্সেস করার চেষ্টা করেন, কিন্তু বস্তুটি অনির্ধারিত থাকে। নীচের বিস্তারিত ব্যাখ্যা দেখুন.

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

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

রোগ নির্ণয়

  1. জাভাস্ক্রিপ্ট নীতি, এর সোর্স ফাইল, লাইন নম্বর যেখানে ত্রুটি ঘটেছে এবং ত্রুটি বিবরণ সনাক্ত করুন৷ আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে এই সমস্ত তথ্য খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, নীতির নাম ParseJSONResponse , উত্স ফাইলটি ParseJSONResponse.js , লাইন নম্বর 6 এবং ত্রুটির বিবরণটি হল 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)\""
    

    ত্রুটি নির্দেশ করে যে সম্পত্তির দৈর্ঘ্য একটি অনির্ধারিত বস্তু থেকে পড়া যাবে না।

  2. জাভাস্ক্রিপ্ট সোর্স ফাইলে লাইন নম্বর পরীক্ষা করুন (উপরে ধাপ # 1 এ চিহ্নিত) এবং বস্তুটির একটি বৈধ মান আছে বা অনির্ধারিত কিনা তা যাচাই করুন। নির্দিষ্ট বস্তুটি কীভাবে সংজ্ঞায়িত বা উদ্ভূত হয়েছে তা নির্ধারণ করার জন্য আপনাকে সম্পূর্ণ উত্স ফাইলটি পড়তে এবং বুঝতে হতে পারে এবং কেন অবজেক্টটি অনির্ধারিত বলে পাওয়া গেছে তা নির্ধারণ করতে হবে। যদি আপনি দেখতে পান যে নির্দিষ্ট বস্তুটি প্রকৃতপক্ষে অনির্ধারিত এবং আপনি এটি থেকে সম্পত্তির দৈর্ঘ্য অ্যাক্সেস করার চেষ্টা করছেন, তাহলে এটি ত্রুটির কারণ।

    এই সমস্যাটি আরও ভালভাবে বোঝার জন্য আসুন একটি উদাহরণ দেখি:

    1. ধরে নিন যে আপনি ব্যাকএন্ড সার্ভার থেকে নিম্নলিখিত JSON প্রতিক্রিয়া পেয়েছেন:

      {
          "cars": [
             { "name":"Toyota", "count": 150 }
             { "name":"Honda", "count": 100 },
             { "name":"Ford", "count": 75 }
          ]
      }
      
    2. এখানে একটি নমুনা জাভাস্ক্রিপ্ট সোর্স ফাইল যা এই JSON প্রতিক্রিয়াকে পার্স করে এবং উপরে উল্লিখিত ত্রুটির দিকে নিয়ে যায়:

      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. জাভাস্ক্রিপ্ট কোডটি সাবধানে পরীক্ষা করলে আপনি দেখতে পাবেন যে লাইন নম্বর 2-এ, response.content বিষয়বস্তুটি নিয়মিত স্ট্রিং (উদ্ধৃতিগুলিতে) ভেরিয়েবল jsonData এ পড়া/সংরক্ষিত হয়েছে।

    4. কারণ jsonData একটি নিয়মিত স্ট্রিং, আপনি যখন jsonData ( jsonData.cars ) থেকে cars অ্যাক্সেস করার চেষ্টা করবেন তখন তা অনির্ধারিত থাকবে।

    5. পরবর্তীকালে, আপনি যখন jsonData.cars থেকে সম্পত্তির length পড়ার চেষ্টা করেন, যা অনির্ধারিত, আপনি ত্রুটিটি পান:

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

রেজোলিউশন

নিশ্চিত করুন যে আপনি সবসময় প্রাসঙ্গিক JSON API ব্যবহার করে JSON ডেটা একটি JSON অবজেক্ট হিসেবে পড়ছেন।

উপরে বর্ণিত জাভাস্ক্রিপ্টের উদাহরণটি ঠিক করতে, আপনি JSON অবজেক্ট হিসাবে এটি পেতে response.content অবজেক্টে JSON.parse() ফাংশন ব্যবহার করতে পারেন। এর পরে, আপনি cars অ্যারে অ্যাক্সেস করতে পারেন এবং অ্যারের মাধ্যমে সফলভাবে পুনরাবৃত্তি করতে পারেন।

// 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 ত্রুটি

যদি আপনি একটি URI ফাংশনে অবৈধ অক্ষর ব্যবহার করেন তবে URIError টাইপ ত্রুটিটি নিক্ষেপ করা হয়। উদাহরণস্বরূপ, আপনি যদি একটি URI পাস করেন যার decodeURI বা decodeURIComponent ফাংশনে শতাংশ চিহ্ন রয়েছে, তাহলে আপনি এই ত্রুটিটি পাবেন।

ত্রুটি প্রতিক্রিয়া বডি

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

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

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

রোগ নির্ণয়

  1. জাভাস্ক্রিপ্ট নীতি, এর সোর্স ফাইল, লাইন নম্বর যেখানে ত্রুটি ঘটেছে এবং ত্রুটি বিবরণ সনাক্ত করুন৷ আপনি ত্রুটি প্রতিক্রিয়ার ফল্টস্ট্রিং উপাদানে এই সমস্ত তথ্য খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত ফল্টস্ট্রিং-এ, জাভাস্ক্রিপ্ট নীতির নাম হল URIDecode</code জাভাস্ক্রিপ্ট সোর্স ফাইল হল URIDecode.js , লাইন নম্বর হল 2 এবং ত্রুটির বিবরণ হল Malformed URI sequence :

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

    ত্রুটির বিবরণ নির্দেশ করে যে URIDecode.js এর 2 নম্বর লাইনে একটি বিকৃত URI ক্রম ব্যবহার করা হয়েছে।

  2. JavaScript সোর্স ফাইলটি পরীক্ষা করুন এবং URI ফাংশনে পাস করা আর্গুমেন্টে কোনো অবৈধ অক্ষর আছে কিনা তা যাচাই করুন। যদি হ্যাঁ, তাহলে এটি ত্রুটির কারণ।

    এখানে একটি উদাহরণ জাভাস্ক্রিপ্ট সোর্স ফাইল যা এই ত্রুটির দিকে নিয়ে যায়:

    URIDecode.js

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

    উপরে দেখানো জাভাস্ক্রিপ্ট কোডের উদাহরণে, decodeURIComponent() এ পাস করা ভেরিয়েবল str একটি শতাংশ চিহ্ন রয়েছে, যা একটি অবৈধ অক্ষর হিসেবে বিবেচিত হয়; অতএব, আপনি ত্রুটি পান:

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

রেজোলিউশন

নিশ্চিত করুন যে URI ফাংশনে ব্যবহৃত সমস্ত অক্ষর আইনি এবং অনুমোদিত৷

উপরে বর্ণিত জাভাস্ক্রিপ্টের উদাহরণ দিয়ে সমস্যাটি সমাধান করতে, শতাংশ চিহ্নটি এনকোড করুন। উদাহরণস্বরূপ, %25 :

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