एरर संदेश, समझाए हुए
104 एरर संदेश — मतलब, कारण और क्या करें।
सुधारों की क़ीमत होती है। git reset --hard बिना कमिट किया काम फेंक देता है, force push किसी और के कमिट मिटा सकता है, और docker system prune बेनाम volumes हटा देता है। जहाँ ऐसा है, वहाँ लिखा है।
Git29
git की लगभग हर त्रुटि एक इनकार होती है जिसका अर्थ है "इस स्थिति से वह काम करने पर कुछ खो जाएगा"; fatal: का मतलब है कि git ने कुछ भी बदले बिना रुक गया, और पहली पंक्ति के नीचे की hint: पंक्तियों में असली उपाय होता है।
npm20
npm में कारण अंतिम छह npm ERR! पंक्तियों में नहीं, पहली code XXXX पंक्ति में लिखा होता है, और जब गड़बड़ी आपके कोड की जगह dependency के पेड़ या native build से आती है, तो node_modules मिटाकर फिर install करने से आधे मामले सुलझ जाते हैं।
JavaScript15
browser और node की त्रुटियाँ आमतौर पर यही बताती हैं कि क्या टूटा, यह नहीं कि वह मान ऐसा क्यों बना — आपने undefined पढ़ा, वह function नहीं था, वह JSON नहीं था — इसलिए सुधार की जगह उस पंक्ति से ऊपर है जिसने त्रुटि फेंकी, और ?. तथा डिफ़ॉल्ट मानों से केवल उस पंक्ति को चुप कराने पर वही समस्या और दूर जाकर, और कठिन रूप में लौट आती है।
Python18
Python का traceback उत्तर को दो हिस्सों में बाँटता है — अंतिम पंक्ति बताती है कि क्या ग़लत हुआ, और उसके ऊपर के frames बताते हैं कि कहाँ — इसलिए केवल अंतिम पंक्ति पढ़ने पर नाम मिलता है और जगह छूट जाती है; और NoneType तथा KeyError जैसी "मान नहीं है" वाली त्रुटियों में कारण लगभग हमेशा उस frame से ऊपर होता है जहाँ गिरा।
बिल्ड और टाइप10
build की त्रुटियाँ किसी औज़ार का चलने से पहले मना कर देना हैं, इसलिए प्रकट होते समय वे कुछ तोड़ती नहीं — पर वे दो सवाल पूछती हैं: क्या आप type या रास्ता असली रूप के अनुसार सुधारेंगे, या as any अथवा दमन-टिप्पणी से उस एक पंक्ति को पार करा देंगे — और यहीं पहली बार वे चीज़ें सामने आती हैं जो केवल आपकी मशीन पर सही हैं: अक्षरों के बड़े-छोटे रूप, extension, और environment variables।
Docker12
docker की त्रुटियाँ तभी पढ़ी जाती हैं जब आप उन्हें परत के हिसाब से बाँट लें — client का daemon तक न पहुँचना, registry का मना करना, build के दौरान किसी RUN का विफल होना, और container का चालू होते ही मर जाना — ये चार अलग समस्याएँ हैं; और build तथा चलने की परतों में पंक्ति स्वयं कारण नहीं होती: कारण उस आदेश के output में होता है जो भीतर चल रहा था, और हर उपाय की क़ीमत भी परत के अनुसार बदलती है।
एरर संदेश कैसे पढ़ें
- पहली पंक्ति से पढ़ें। जितना नीचे जाएँगे उतना वह औज़ार के भीतर की बात है; कारण आम तौर पर सबसे ऊपर लिखा होता है।
- फ़ाइल का नाम और पंक्ति संख्या दिखे तो वहीं से शुरू करें — stack का सबसे ऊपरी frame नहीं, बल्कि वह सबसे ऊपरी पंक्ति जिसमें आपकी लिखी फ़ाइल का नाम हो।
- संदेश को जैसा है वैसा खोजें, पर पहले अपने paths और variable नाम हटा दें — वही खोज को अटकाते हैं।
- वही स्थिति औज़ार के हर संस्करण में अलग शब्दों में आती है। नतीजे बेमेल लगें तो संस्करण संख्या भी जोड़ें।
- कोई सुधार चिपकाने से पहले देख लें कि वह क्या फेंक देगा। इनमें कुछ पलटे नहीं जा सकते।
अक्सर पूछे जाने वाले सवाल
Q. एरर संदेशों का अनुवाद क्यों नहीं होता?
क्योंकि आप उन्हें खोजेंगे। औज़ार अंग्रेज़ी में छापता है, और अनुवाद किए संदेश से कुछ नहीं मिलता। भाषा सिर्फ़ अर्थ और उपाय की बदलती है।
Q. मेरी स्क्रीन पर शब्द ज़रा अलग हैं।
औज़ार हर संस्करण में शब्द बदल देते हैं। अपने paths और नाम हटाने के बाद ढाँचा वही हो तो वही एरर है। संस्करण अलग हो तो खोज में उसका नंबर भी जोड़ें।
Q. सुधार को वैसे ही चला सकते हैं?
पहले देखें कि वह क्या फेंकता है। git reset --hard, force push और docker system prune ऐसी चीज़ें हटाते हैं जो वापस नहीं आतीं — जहाँ ऐसा है वहाँ लिखा है।
Q. जो एरर यहाँ नहीं है उसे कैसे खोजें?
संदेश से अपने paths, नाम और अंक हटाकर बाक़ी खोजें। वह बाक़ी हिस्सा औज़ार के लेखकों का लिखा वाक्य है, और वही मेल खाता है।