জাভাস্ক্রিপ্ট ত্রুটির জন্য সম্ভাব্য কেস: "প্রত্যাশিত শনাক্তকারী, স্ট্রিং বা নম্বর"


87

কিছু ব্যবহারকারী আমার সাইটে মাঝে মাঝে জেএস ত্রুটিগুলি রিপোর্ট করে। ত্রুটি বার্তাটি "প্রত্যাশিত শনাক্তকারী, স্ট্রিং বা নম্বর" বলে এবং লাইন নম্বরটি 423725915, যা কেবল একটি স্বেচ্ছাসেবী সংখ্যা এবং যখন ঘটে তখন প্রতিটি প্রতিবেদনের পরিবর্তন হয়। এটি প্রায়শই আই 7 / মজিলা 4.0 ব্রাউজারগুলির সাথে ঘটে।

আমি আমার কোডটি বেশ কয়েকবার স্ক্যান করে jslint চালিয়েছি তবে এটি কিছুই গ্রহণ করেনি - সাধারণ ত্রুটিযুক্ত বার্তাটি জেএসের যে ধরণের সমস্যা রয়েছে তা সম্পর্কে কেউ জানেন?


প্রথম যে বিষয়টি মাথায় আসে তা হ'ল সুস্পষ্ট।
অ্যান্টনি ফর্লনি

এটি কি এমন অ্যারে আক্ষরিক হতে পারে যা শেষে ঝোলা কমা পেয়েছে? (এছাড়াও, "মোজিলা 4.0" কী?)
পয়েন্টি

মজিলা 4.0 ইউজার এজেন্ট স্ট্রিংয়ের সাথে সামঞ্জস্যপূর্ণ
সাইকোটিক

উত্তর:


150

এই জাতীয় ত্রুটির কারণ প্রায়শই কোনও বস্তু বা অ্যারের সংজ্ঞাতে একটি ভুল কমা হতে পারে:

var obj = {
   id: 23,
   name: "test",  <--
}

যদি এটি কোনও এলোমেলো লাইনে উপস্থিত হয়, তবে এটি সম্ভবত আপনি গতিশীলভাবে তৈরি করছেন এমন কোনও অবজেক্টের দৃ of়তার অংশ।


এটি অনুপস্থিত ছিল; ইভেন্ট অ্যাসাইনমেন্টে। গতিশীলভাবে তৈরি বস্তুগুলিকে দেখার ক্লুটি এটি বাছাইতে সহায়তা করেছিল। jslint এটি প্রাথমিকভাবে কোজটি খুঁজে পায়নি এটি এইচটিএমএল পৃষ্ঠার অংশ হিসাবে ইনলাইন জেএস হিসাবে উত্পন্ন হয়েছিল। ধন্যবাদ!
সাইকোটিক

4
না এটা হবে না। বেশিরভাগ আধুনিক ব্রাউজার আপনার জন্য এটি ঠিক করে। আই 6/7 দেয় না। এবং আইই 8 এমুলেশন মোডে আই 8 ডিবাগিং এটি ধরা দেয় না। (আমি অনুমান করছি যে আপনি জানেন যে আই 7 এর কোনও ডিবাগার নেই - আই 7 এর সাথে ভিএস ব্যবহার করা এটিও ধরা দেয় না)। এটি চেষ্টা করুন এবং তারপরে আমাকে বলুন;)
সাইকোটিক

4
ধন্যবাদ! স্পষ্টতই এটি ক্রোমের মতো অন্যান্য ব্রাউজারগুলিতে কোনও সমস্যা নয়।
বি সেভেন

4
আপনি regex ", * s *]" এবং ", * s * \}" (উদ্ধৃতি ব্যতীত) ব্যবহার করে এ জাতীয় ঘটনাগুলি অনুসন্ধান করতে পারেন। আমাকে অনেক সময় বাঁচিয়েছে।
গোখন কুর্ট

4
জাভাস্ক্রিপ্টের জন্য ,\s*?\n?\s*?],\s*?\n?\s*?\}
রেগেক্স

84

জাভাস্ক্রিপ্ট অভিধানে কী হিসাবে ক্লাস শব্দটি ব্যবহার করা ভয়ঙ্কর "প্রত্যাশিত শনাক্তকারী, স্ট্রিং বা নম্বর" ত্রুটিটিকে ট্রিগার করতে পারে কারণ ক্লাসটি ইন্টারনেট এক্সপ্লোরারটিতে একটি সংরক্ষিত কীওয়ার্ড।

খারাপ

{ class : 'overlay'} // ERROR: Expected identifier, string or number

ভাল

{'class': 'overlay'}

জাভাস্ক্রিপ্ট অভিধানে কী হিসাবে সংরক্ষিত কীওয়ার্ডটি ব্যবহার করার সময়, উদ্ধৃতিতে কীটি বন্ধ করুন।

আশা করি এই ইঙ্গিতটি আপনাকে জাহান্নাম ডিবাগ করার একটি দিন বাঁচায়।


খুব সুন্দর, আমি এই সমস্যাটি নিয়ে ঘন্টার পর ঘন্টা লড়াই করছি। এখনই সমাধান হয়েছে।
জন প্রাদো

প্রয়োজনের তুলনায় আর এই জাভাস্ক্রিপ্ট লাইব্রেরিটিতে আমাকে দেখার থেকে বাঁচানোর জন্য আপনাকে ধন্যবাদ স্যার।
খেপরি

4
আমি JSHint করার জন্য একটি বাগ দাখিল আশা তারা ভবিষ্যতে ত্রুটি এই প্রকারের সনাক্ত করতে সক্ষম হবেন: github.com/jshint/jshint/issues/1000
Travis

4
@ ট্রাভিস তারা আসলে এটি # 674 :-) এর ফলাফল হিসাবে মঞ্জুরি দিয়েছে
সিএমবিকলি

4
আমার ঠিক একই ত্রুটি ছিল, তবে সম্পত্তি "আমদানি"। এখানে "রিজার্ভড ওয়ার্ডস" বিকাশকারী
momozilla.org/en-US/docs/Web/JavaScript/References/…

11

আসলে আমি সম্প্রতি IE তে এরকম কিছু পেয়েছি এবং এটি জাভাস্ক্রিপ্ট সিনট্যাক্স "ত্রুটি" সম্পর্কিত। আমি উদ্ধৃতিগুলিতে ত্রুটি বলি কারণ এটি সর্বত্রই ছিল তবে আইই তে। এটি আই 6 এর অধীনে ছিল। সমস্যাটি JSON অবজেক্ট তৈরি এবং একটি অতিরিক্ত কমা সম্পর্কিত যেমন সম্পর্কিত

{ one:1, two:2, three:3, }

আই 6 6 এর পরে সত্যিই সেই কমা পছন্দ করে না You আপনি এর মতো কিছু পেতে পারেন, স্বল্প সংশ্লেষের আনুষ্ঠানিকতার বিষয়গুলি।

হ্যাঁ, আমি ভেবেছিলাম আমার 25 লাইনের জাভাস্ক্রিপ্টের বহু মিলিয়ন লাইনের নম্বরটিও আকর্ষণীয়।

শুভকামনা।


+1 এটি আমাকে অনেক সাহায্য করেছে। অতিরিক্ত প্রশ্ন চিহ্নটি আমার জন্য IE8 ভাঙেনি, তবে break.৯ টি করে।
ইভান ডার্স্ট

9

এটি একটি নির্ভুল উত্তর-উত্তর: অন্যকে সঠিক উত্তরের দিকে নেভিগেট করতে সহায়তা করার জন্য একটি লোভনীয়-তবে-ভুল উত্তরকে সরিয়ে দেওয়া।

মনে হচ্ছে ডিবাগিংয়ের ফলে সমস্যাটি হাইলাইট হবে। তবে, কেবলমাত্র ব্রাউজারটিতেই সমস্যা দেখা যায় তা হ'ল আইই এবং আইই তে আপনি কেবল সেই কোডটি ডিবাগ করতে পারেন যা মূল নথির অংশ ছিল। গতিযুক্ত যুক্ত কোডের জন্য, ডিবাগারটি কেবলমাত্র বর্তমান নির্দেশ হিসাবে দেহের উপাদান প্রদর্শন করে এবং আইই দাবি করে যে ত্রুটিটি একটি বিশাল লাইন সংখ্যায় ঘটেছে।

এখানে একটি নমুনা ওয়েব পৃষ্ঠা যা আইইতে এই সমস্যাটি প্রদর্শন করবে:

<html>
<head>
<title>javascript debug test</title>
</head>
<body onload="attachScript();">
<script type="text/javascript">
function attachScript() {
   var s = document.createElement("script");
   s.setAttribute("type", "text/javascript");
   document.body.appendChild(s);
   s.text = "var a = document.getElementById('nonexistent'); alert(a.tagName);"
}
</script>
</body>

এটি আমার জন্য নিম্নলিখিত ত্রুটিটি পেয়েছিল:

Line: 54654408
Error: Object required

@ প্রোটেক্টরোন অস্থায়ীভাবে জাভাস্ক্রিপ্টটি দস্তাবেজে নিজেই কোনও <script>ট্যাগের মাধ্যমে স্থানীয় বা লোড হওয়া সংস্থান হিসাবে রেখে দেয়। ডিবাগ। আপনার কার্যকারী স্ক্রিপ্টে ফিরে যান।
এরিক

5

আমার অ্যাপ্লিকেশনগুলির মধ্যে একটি বাগটি কেবল ধরা পড়েছে, ক্যাচ-অল হিসাবে, সমস্ত জাভাস্ক্রিপ্টের বৈশিষ্ট্যগুলির নামটি কীওয়ার্ডের মতো একইভাবে সংযুক্ত করে মনে রাখবেন।

কোনও বাগে যোগদানের পরে এই বাগটি পাওয়া গেছে যেখানে কোনও বস্তু যেমন:

var x = { class: 'myClass', function: 'myFunction'};

ত্রুটি উত্পন্ন হয়েছে (শ্রেণি এবং ফাংশন কীওয়ার্ড) এটি উদ্ধৃতি যোগ করে ঠিক করা হয়েছিল

var x = { 'class': 'myClass', 'function': 'myFunction'};

আমি আপনাকে কিছু সময় সাশ্রয় আশা করি


আমি একই ইস্যু মধ্যে দৌড়ে। আমার কোডটি এমন কিছু ব্যবহার if(_features.delete){...}করছিল যা একটি ত্রুটি সৃষ্টি করছিল কারণ মুছুন একটি কীওয়ার্ড। stackoverflow.com/questions/26255/...
Snekse


2

যেমন পূর্বে উল্লেখ করা হয়েছে, অতিরিক্ত কমা থাকার ফলে একটি ত্রুটি ছুঁড়েছে।

এছাড়াও আই.ই. .0.০-তে, একটি লাইনের শেষে একটি সেমিকোলন না থাকার কারণে একটি ত্রুটি হয়েছিল। এটি সাফারি এবং ক্রোমে (কনসোলে কোনও ত্রুটি ছাড়াই) দুর্দান্ত কাজ করে।


2

নতুন ব্রাউজারগুলি, বিশেষত ক্রোমের চেয়ে আই 7 অনেক বেশি ক্ষমাশীল। আমি এই বাগগুলি খুঁজে পেতে JSLint ব্যবহার করতে চাই । এটি অন্যান্য জিনিসের মধ্যে এই যথাযথভাবে স্থাপন করা কমাগুলি খুঁজে পাবে। আপনি সম্ভবত অপ্রয়োজনীয় সাদা স্থান উপেক্ষা করার বিকল্পটি সক্রিয় করতে চাইবেন।

এই ব্লগে অন্যায়ভাবে মন্তব্য করা ভুল অনুসারে কমা দেওয়া ছাড়াও :

আমি একটি ত্রুটি শিকার করেছি যা কেবলমাত্র আইই (7) তে "প্রত্যাশিত সনাক্তকারী" বলেছিল। আমার গবেষণা আমাকে এই পৃষ্ঠায় নিয়ে গেছে। কিছুটা হতাশার পরে, এটি প্রমাণিত হয়েছিল যে যে সমস্যাটি আমি একটি ফাংশন নাম ("স্যুইচ") হিসাবে একটি সংরক্ষিত শব্দ ব্যবহার করেছি। আপনার ত্রুটি পরিষ্কার ছিল না এবং এটি ভুল লাইন নম্বরটির দিকে ইঙ্গিত করেছিল।


1

অযাচিত সরিয়ে ফাংশনে সাইন ইন করুন। আপনি সমাধান পাবেন।

এটি উল্লেখ করুন

http://blog.favrik.com/2007/11/29/ie7-error-expected- شناختfier-string-or-number/


আপনার সমাধানটি সঠিক, আমি আপনাকে -1 ডাউনভোটটি সরিয়ে দিতে উত্সাহিত করেছি। কেউ কেন সঠিক উত্তরকে কমিয়ে দেবে তা নিশ্চিত নয়।
আকস্মমত

1

এই ত্রুটিটি ঘটে যখন আমরা অ্যারের শেষে বা ফাংশন কোডে কমা অপসারণ করতে বা মিস করি। এই জাতীয় ত্রুটির জন্য কোনও ওয়েব পৃষ্ঠার পুরো কোডটি পর্যবেক্ষণ করা প্রয়োজন।

আমি যখন ফেসবুক এপিআইয়ের কোডিং করছিলাম তখন এটি একটি ফেসবুক অ্যাপ কোডে পেয়েছি।

<div id='fb-root'>
    <script type='text/javascript' src='http://connect.facebook.net/en_US/all.js'</script>
    <script type='text/javascript'>
          window.fbAsyncInit = function() {
             FB.init({appId:'".$appid."', status: true, cookie: true, xfbml: true});            
             FB.Canvas.setSize({ width: 800 , height: 860 , }); 
                                                       // ^ extra comma here
          };
    </script>

0

এটি আমার কাছে এমন স্ক্রিপ্টের মতো মনে হচ্ছে যা এসআরসি দিয়ে টানা হয়েছিল এবং ঠিক অর্ধেকটা লোড হয়ে গেছে যার ফলে বাকী বাকী অংশটি লোড হয় না a


0

আই 7 এর অবজেক্টগুলির অ্যারে নিয়ে সমস্যা রয়েছে

columns: [
{
  field: "id",
  header: "ID"
},
{
  field: "name",
  header: "Name" , /* this comma was the problem*/ 
},
...

0

এই বাগের আর একটি প্রকরণ: আমার 'ক্রিয়াকলাপ' নামে একটি ফাংশন ছিল এবং এটি সংরক্ষিত শব্দ হওয়ায় এটি এই ত্রুটিটি ছুঁড়ে ফেলেছে। আমাকে আমার ক্রিয়াকলাপটির নাম 'চালিয়ে যাওয়া ক্লিক' করতে হয়েছিল


0

হতে পারে আপনার কাছে একটি পদ্ধতি 'কন্সট্রাক্টর' রয়েছে এমন একটি জিনিস পেয়েছে এবং সেইটিকে অনুরোধ করার চেষ্টা করব।


0

নকআউট জেএস ব্যবহার করার সময় আপনি এই সমস্যায় পড়তে পারেন। আপনি যদি নীচের উদাহরণের মতো শ্রেণীর বৈশিষ্ট্য নির্ধারণের চেষ্টা করেন তবে এটি ব্যর্থ হবে:

<span data-bind="attr: { class: something() }"></span>

ক্লাসের স্ট্রিংটি এভাবে পালাও:

<span data-bind="attr: { 'class': something() }"></span>

আমার 2 সেন্ট।


0

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


4
স্ট্যাক ওভারফ্লোতে স্বাগতম! এর অর্থ কী এর একটি উদাহরণ দিতে পারেন: "আমার জেএসপি / এইচটিএমএল ছিল" "
বিলিচার্ডস

0

সমস্যাটি ডিবাগ করার জন্য এখানে একটি সহজ কৌশল: কনসোলে স্ক্রিপ্ট / কোডটি প্রতিধ্বনিত করুন। কনসোল থেকে কোডটি আপনার আইডিইতে অনুলিপি করুন। বেশিরভাগ আইডিই'র কোড পরীক্ষা করার সময় ত্রুটি সম্পাদন করে ত্রুটিগুলি হাইলাইট করে। আপনার জাভাস্ক্রিপ্ট / এইচটিএমএল সম্পাদকটিতে তত্ক্ষণাত্ ত্রুটিটি দেখতে পারা উচিত।


0

একটি ভিন্ন কনফিগারেশন নিয়ে একই সমস্যা ছিল। এটি একটি কৌণিক কারখানার সংজ্ঞা ছিল, তবে আমি ধরে নিয়েছি এটি অন্য কোথাও ঘটতে পারে:

angular.module("myModule").factory("myFactory", function(){
    return
    {
        myMethod : function() // <--- error showing up here
        {
            // method definition
        } 
    }
});

ফিক্স খুব বহিরাগত:

angular.module("myModule").factory("myFactory", function(){
    return { // <--- notice the absence of the return line
        myMethod : function()
        {
            // method definition
        } 
    }
});

0

আপনি ক্লাসের মধ্যে কোথাও মাঝখানে কোনও ফাংশন কল করলে এটি টাইপস্ক্রিপ্টেও ঘটতে পারে। উদাহরণ স্বরূপ

class Dojo implements Sensei {
     console.log('Hi'); // ERROR Identifier expected.
     constructor(){}
}

ফাংশন কলগুলি যেমন console.log()ফাংশনের অভ্যন্তরে থাকতে হবে। আপনার যে শ্রেণীর ক্ষেত্রগুলি ঘোষণা করা উচিত সে অঞ্চলে নয়।


0

উইন্ডোজ ইস্যু জন্য টাইপস্ক্রিপ্ট

এটি আইই, ক্রোম, এফএফ এ কাজ করে

export const OTP_CLOSE = { 'outcomeCode': 'OTP_CLOSE' };

এটি ক্রোম, এফএফ, আইই 11 এ কাজ করে না works

export const OTP_CLOSE = { outcomeCode: 'OTP_CLOSE' };

আমার ধারণা এটি কোনওভাবে উইন্ডোজ সংরক্ষিত শব্দের সাথে সম্পর্কিতএখানে চিত্র বর্ণনা লিখুন


0

আমি এই ত্রুটিটি পেরিয়ে এসেছি যেখানে ট্রেলিং কমা বা এই জাতীয় কিছু না করে এই সিনট্যাক্সটি কনস্ট্যান্টস.জেএস ব্যবহার করা হয়েছিল had

    var titles = {
      [title.X]: 'X title',
      [title.Y]: 'Y title'
    }

আইই 11 এটিকে মোটেই পছন্দ করেনি।

পূর্বে উল্লেখ করা হয়েছে যদিও এটি ব্যবহার করে সহজেই ঠিক করা হয়েছিল

   var titles = {
     'title.X': 'X title',
     'title.Y': 'Y title'   
   }

4
এগুলি সমতুল্য প্রকাশ নয়। প্রথমটি শিরোনামের মানগুলি ব্যবহার করে। X এবং শিরোনাম.ইয় বৈশিষ্ট্যগুলি শিরোনামের অবজেক্টে কী হিসাবে, দ্বিতীয়টি "শিরোনাম। এক্স" এবং "শিরোনাম.ওয়াই" কী হিসাবে ব্যবহার করে।
নবারন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.