chrome · JavaScript
संदेश
Uncaught TypeError: Cannot read properties of undefined (reading 'name')
इसका मतलब
बिंदु के बाईं ओर का मान undefined है और आपने उसका गुण पढ़ लिया; कोष्ठक में लिखा नाम वह गुण है जो आप चाहते थे, इसलिए ख़राब चीज़ उससे पहले का मान है। यह अभी न पहुँची response, किसी के न भेजी prop, data.user.name जैसी एक परत ज़्यादा गहराई, या ख़ाली array पर arr[0].id से आता है। जहाँ मान वाक़ई वैकल्पिक है, वहाँ user?.name रास्ता काट देता है; पर अगर वह मान होना ही चाहिए था, तो ?. त्रुटि को केवल एक undefined में बदलकर अगली पंक्ति पर टाल देता है — ऊपर जाकर खोजें कि वह undefined क्यों है। Chrome 78 से पहले यही त्रुटि Cannot read property 'name' of undefined लिखी जाती थी।
सुधार
इसका एक-लाइन कमांड नहीं है। व्याख्या में लिखा है कि क्या देखना है।
- कौन देता है
- chrome
- JavaScript
- 15
browser और node की त्रुटियाँ आमतौर पर यही बताती हैं कि क्या टूटा, यह नहीं कि वह मान ऐसा क्यों बना — आपने undefined पढ़ा, वह function नहीं था, वह JSON नहीं था — इसलिए सुधार की जगह उस पंक्ति से ऊपर है जिसने त्रुटि फेंकी, और ?. तथा डिफ़ॉल्ट मानों से केवल उस पंक्ति को चुप कराने पर वही समस्या और दूर जाकर, और कठिन रूप में लौट आती है।
एरर संदेश कैसे पढ़ें
- पहली पंक्ति से पढ़ें। जितना नीचे जाएँगे उतना वह औज़ार के भीतर की बात है; कारण आम तौर पर सबसे ऊपर लिखा होता है।
- फ़ाइल का नाम और पंक्ति संख्या दिखे तो वहीं से शुरू करें — stack का सबसे ऊपरी frame नहीं, बल्कि वह सबसे ऊपरी पंक्ति जिसमें आपकी लिखी फ़ाइल का नाम हो।
- संदेश को जैसा है वैसा खोजें, पर पहले अपने paths और variable नाम हटा दें — वही खोज को अटकाते हैं।
- वही स्थिति औज़ार के हर संस्करण में अलग शब्दों में आती है। नतीजे बेमेल लगें तो संस्करण संख्या भी जोड़ें।
- कोई सुधार चिपकाने से पहले देख लें कि वह क्या फेंक देगा। इनमें कुछ पलटे नहीं जा सकते।
अक्सर पूछे जाने वाले सवाल
Q. “Uncaught TypeError: Cannot read properties of undefined (reading 'name')” का क्या मतलब है?
बिंदु के बाईं ओर का मान undefined है और आपने उसका गुण पढ़ लिया; कोष्ठक में लिखा नाम वह गुण है जो आप चाहते थे, इसलिए ख़राब चीज़ उससे पहले का मान है। यह अभी न पहुँची response, किसी के न भेजी prop, data.user.name जैसी एक परत ज़्यादा गहराई, या ख़ाली array पर arr[0].id से आता है। जहाँ मान वाक़ई वैकल्पिक है, वहाँ user?.name रास्ता काट देता है; पर अगर वह मान होना ही चाहिए था, तो ?. त्रुटि को केवल एक undefined में बदलकर अगली पंक्ति पर टाल देता है — ऊपर जाकर खोजें कि वह undefined क्यों है। Chrome 78 से पहले यही त्रुटि Cannot read property 'name' of undefined लिखी जाती थी।
Q. इसे कैसे ठीक करें?
एक-लाइन कमांड नहीं है। ऊपर की व्याख्या में लिखा है कि क्या देखना है।
Q. यह कौन-सा औज़ार देता है?
chrome। यह JavaScript में आता है, और संदेश 9 शब्दों का है।