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

chrome 111+ · JavaScript

संदेश

SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON

इसका मतलब

आपने JSON.parse को जो दिया वह HTML था, JSON नहीं। संदेश में उद्धृत <!DOCTYPE टुकड़ा इसका सबूत है, और इसका अर्थ है कि server ने HTML पृष्ठ लौटाया — कोई 404, 502, या login की ओर redirect — इसलिए असली गड़बड़ी parse से पहले, request में है। आम कारण: ग़लत URL, development server का ऐसा proxy जिसने API की जगह index.html दिया, या समाप्त हो चुका session जो login पृष्ठ पर ले गया। res.json() बुलाने से पहले res.ok देखें, और res.text() पढ़कर देखें कि असल में क्या आया; उस URL को curl -s से सीधे मारना सबसे तेज़ तरीक़ा है। Chrome 111 और Node 20 से पहले यही त्रुटि Unexpected token < in JSON at position 0 लिखी जाती थी।

सुधार

curl -s https://api.example.com/data | head -5
कौन देता है
chrome 111+
JavaScript
15

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

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

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

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

Q. “SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON” का क्या मतलब है?

आपने JSON.parse को जो दिया वह HTML था, JSON नहीं। संदेश में उद्धृत <!DOCTYPE टुकड़ा इसका सबूत है, और इसका अर्थ है कि server ने HTML पृष्ठ लौटाया — कोई 404, 502, या login की ओर redirect — इसलिए असली गड़बड़ी parse से पहले, request में है। आम कारण: ग़लत URL, development server का ऐसा proxy जिसने API की जगह index.html दिया, या समाप्त हो चुका session जो login पृष्ठ पर ले गया। res.json() बुलाने से पहले res.ok देखें, और res.text() पढ़कर देखें कि असल में क्या आया; उस URL को curl -s से सीधे मारना सबसे तेज़ तरीक़ा है। Chrome 111 और Node 20 से पहले यही त्रुटि Unexpected token < in JSON at position 0 लिखी जाती थी।

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

curl -s https://api.example.com/data | head -5 — चलाने से पहले ऊपर देख लें कि यह कमांड क्या फेंक देता है।

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

chrome 111+। यह JavaScript में आता है, और संदेश 10 शब्दों का है।

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