होम·एरर संदेश

node · JavaScript

संदेश

RangeError: Maximum call stack size exceeded

इसका मतलब

कॉल इंजन की सीमा से भी गहरे ढेर हो गए, और यह आमतौर पर गहरी recursion नहीं, अनंत recursion होती है। ऐसा function जिसकी रुकने की शर्त नहीं है या पहुँचती नहीं, दो function जो एक-दूसरे को बुलाते हैं, अपने आप को समेटे object पर JSON.stringify, या React में ऐसा render जो उसी state को बदलता है जिस पर वह निर्भर है। console की stack में दो-तीन frames दोहराते हैं — वही जोड़ी लूप है, और base case वहीं जाता है। यदि गणना को सचमुच गहराई चाहिए, तो recursion को loop या स्पष्ट stack में बदलना ही एकमात्र रास्ता है: browser में stack की सीमा बढ़ाई नहीं जा सकती।

सुधार

इसका एक-लाइन कमांड नहीं है। व्याख्या में लिखा है कि क्या देखना है।

कौन देता है
node
JavaScript
15

browser और node की त्रुटियाँ आमतौर पर यही बताती हैं कि क्या टूटा, यह नहीं कि वह मान ऐसा क्यों बना — आपने undefined पढ़ा, वह function नहीं था, वह JSON नहीं था — इसलिए सुधार की जगह उस पंक्ति से ऊपर है जिसने त्रुटि फेंकी, और ?. तथा डिफ़ॉल्ट मानों से केवल उस पंक्ति को चुप कराने पर वही समस्या और दूर जाकर, और कठिन रूप में लौट आती है।

एरर संदेश कैसे पढ़ें

  • पहली पंक्ति से पढ़ें। जितना नीचे जाएँगे उतना वह औज़ार के भीतर की बात है; कारण आम तौर पर सबसे ऊपर लिखा होता है।
  • फ़ाइल का नाम और पंक्ति संख्या दिखे तो वहीं से शुरू करें — stack का सबसे ऊपरी frame नहीं, बल्कि वह सबसे ऊपरी पंक्ति जिसमें आपकी लिखी फ़ाइल का नाम हो।
  • संदेश को जैसा है वैसा खोजें, पर पहले अपने paths और variable नाम हटा दें — वही खोज को अटकाते हैं।
  • वही स्थिति औज़ार के हर संस्करण में अलग शब्दों में आती है। नतीजे बेमेल लगें तो संस्करण संख्या भी जोड़ें।
  • कोई सुधार चिपकाने से पहले देख लें कि वह क्या फेंक देगा। इनमें कुछ पलटे नहीं जा सकते।

अक्सर पूछे जाने वाले सवाल

Q. “RangeError: Maximum call stack size exceeded” का क्या मतलब है?

कॉल इंजन की सीमा से भी गहरे ढेर हो गए, और यह आमतौर पर गहरी recursion नहीं, अनंत recursion होती है। ऐसा function जिसकी रुकने की शर्त नहीं है या पहुँचती नहीं, दो function जो एक-दूसरे को बुलाते हैं, अपने आप को समेटे object पर JSON.stringify, या React में ऐसा render जो उसी state को बदलता है जिस पर वह निर्भर है। console की stack में दो-तीन frames दोहराते हैं — वही जोड़ी लूप है, और base case वहीं जाता है। यदि गणना को सचमुच गहराई चाहिए, तो recursion को loop या स्पष्ट stack में बदलना ही एकमात्र रास्ता है: browser में stack की सीमा बढ़ाई नहीं जा सकती।

Q. इसे कैसे ठीक करें?

एक-लाइन कमांड नहीं है। ऊपर की व्याख्या में लिखा है कि क्या देखना है।

Q. यह कौन-सा औज़ार देता है?

node। यह JavaScript में आता है, और संदेश 6 शब्दों का है।

साथ आने वाले एरर