react · JavaScript
संदेश
Objects are not valid as a React child (found: object with keys {name, id})
इसका मतलब
जिस मान को आपने React से दिखाने को कहा वह string या संख्या नहीं, object है, और कोष्ठक में दी keys की सूची बताती है कि वह कौन सा object है। आमतौर पर जहाँ {user} लिखा है वहाँ {user.name} होना चाहिए, या आपने पूरा response ही दिखाने की कोशिश की। यदि keys की सूची के बजाय found: [object Promise] दिखे तो कारण अलग है: आपने किसी async function का परिणाम await किए बिना दिखा दिया। दिखाने के लिए फ़ील्ड चुनना ही उपाय है; debug करते समय JSON.stringify(user) एक झलक के लिए ठीक है, पर उसे परदे पर छोड़ें नहीं।
सुधार
इसका एक-लाइन कमांड नहीं है। व्याख्या में लिखा है कि क्या देखना है।
- कौन देता है
- react
- JavaScript
- 15
browser और node की त्रुटियाँ आमतौर पर यही बताती हैं कि क्या टूटा, यह नहीं कि वह मान ऐसा क्यों बना — आपने undefined पढ़ा, वह function नहीं था, वह JSON नहीं था — इसलिए सुधार की जगह उस पंक्ति से ऊपर है जिसने त्रुटि फेंकी, और ?. तथा डिफ़ॉल्ट मानों से केवल उस पंक्ति को चुप कराने पर वही समस्या और दूर जाकर, और कठिन रूप में लौट आती है।
एरर संदेश कैसे पढ़ें
- पहली पंक्ति से पढ़ें। जितना नीचे जाएँगे उतना वह औज़ार के भीतर की बात है; कारण आम तौर पर सबसे ऊपर लिखा होता है।
- फ़ाइल का नाम और पंक्ति संख्या दिखे तो वहीं से शुरू करें — stack का सबसे ऊपरी frame नहीं, बल्कि वह सबसे ऊपरी पंक्ति जिसमें आपकी लिखी फ़ाइल का नाम हो।
- संदेश को जैसा है वैसा खोजें, पर पहले अपने paths और variable नाम हटा दें — वही खोज को अटकाते हैं।
- वही स्थिति औज़ार के हर संस्करण में अलग शब्दों में आती है। नतीजे बेमेल लगें तो संस्करण संख्या भी जोड़ें।
- कोई सुधार चिपकाने से पहले देख लें कि वह क्या फेंक देगा। इनमें कुछ पलटे नहीं जा सकते।
अक्सर पूछे जाने वाले सवाल
Q. “Objects are not valid as a React child (found: object with keys {name, id})” का क्या मतलब है?
जिस मान को आपने React से दिखाने को कहा वह string या संख्या नहीं, object है, और कोष्ठक में दी keys की सूची बताती है कि वह कौन सा object है। आमतौर पर जहाँ {user} लिखा है वहाँ {user.name} होना चाहिए, या आपने पूरा response ही दिखाने की कोशिश की। यदि keys की सूची के बजाय found: [object Promise] दिखे तो कारण अलग है: आपने किसी async function का परिणाम await किए बिना दिखा दिया। दिखाने के लिए फ़ील्ड चुनना ही उपाय है; debug करते समय JSON.stringify(user) एक झलक के लिए ठीक है, पर उसे परदे पर छोड़ें नहीं।
Q. इसे कैसे ठीक करें?
एक-लाइन कमांड नहीं है। ऊपर की व्याख्या में लिखा है कि क्या देखना है।
Q. यह कौन-सा औज़ार देता है?
react। यह JavaScript में आता है, और संदेश 14 शब्दों का है।