node · JavaScript
संदेश
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/app/src/util' imported from /app/src/index.js
इसका मतलब
जब Node, ESM चलाता है तो वह import के रास्तों को browser की तरह अक्षरशः फ़ाइल-नाम मानता है, इसलिए './util', './util.js' नहीं है — वह एक ऐसी फ़ाइल है जो मौजूद नहीं। CommonJS आपके लिए extension आज़मा लेता था, और TypeScript बिना extension वाले import को संकलन के बाद भी वैसा ही छोड़ देता है, इसीलिए tsc से बने project को पहली बार node से चलाने पर ये ढेरों निकलते हैं। सापेक्ष import में .js extension जोड़ें; TypeScript फ़ाइल के भीतर भी './util.js' ही लिखा जाता है, क्योंकि Node जो पढ़ेगा वह संकलित परिणाम है। node_modules के package नामों पर extension नहीं लगता।
सुधार
इसका एक-लाइन कमांड नहीं है। व्याख्या में लिखा है कि क्या देखना है।
- कौन देता है
- node
- JavaScript
- 15
browser और node की त्रुटियाँ आमतौर पर यही बताती हैं कि क्या टूटा, यह नहीं कि वह मान ऐसा क्यों बना — आपने undefined पढ़ा, वह function नहीं था, वह JSON नहीं था — इसलिए सुधार की जगह उस पंक्ति से ऊपर है जिसने त्रुटि फेंकी, और ?. तथा डिफ़ॉल्ट मानों से केवल उस पंक्ति को चुप कराने पर वही समस्या और दूर जाकर, और कठिन रूप में लौट आती है।
एरर संदेश कैसे पढ़ें
- पहली पंक्ति से पढ़ें। जितना नीचे जाएँगे उतना वह औज़ार के भीतर की बात है; कारण आम तौर पर सबसे ऊपर लिखा होता है।
- फ़ाइल का नाम और पंक्ति संख्या दिखे तो वहीं से शुरू करें — stack का सबसे ऊपरी frame नहीं, बल्कि वह सबसे ऊपरी पंक्ति जिसमें आपकी लिखी फ़ाइल का नाम हो।
- संदेश को जैसा है वैसा खोजें, पर पहले अपने paths और variable नाम हटा दें — वही खोज को अटकाते हैं।
- वही स्थिति औज़ार के हर संस्करण में अलग शब्दों में आती है। नतीजे बेमेल लगें तो संस्करण संख्या भी जोड़ें।
- कोई सुधार चिपकाने से पहले देख लें कि वह क्या फेंक देगा। इनमें कुछ पलटे नहीं जा सकते।
अक्सर पूछे जाने वाले सवाल
Q. “Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/app/src/util' imported from /app/src/index.js” का क्या मतलब है?
जब Node, ESM चलाता है तो वह import के रास्तों को browser की तरह अक्षरशः फ़ाइल-नाम मानता है, इसलिए './util', './util.js' नहीं है — वह एक ऐसी फ़ाइल है जो मौजूद नहीं। CommonJS आपके लिए extension आज़मा लेता था, और TypeScript बिना extension वाले import को संकलन के बाद भी वैसा ही छोड़ देता है, इसीलिए tsc से बने project को पहली बार node से चलाने पर ये ढेरों निकलते हैं। सापेक्ष import में .js extension जोड़ें; TypeScript फ़ाइल के भीतर भी './util.js' ही लिखा जाता है, क्योंकि Node जो पढ़ेगा वह संकलित परिणाम है। node_modules के package नामों पर extension नहीं लगता।
Q. इसे कैसे ठीक करें?
एक-लाइन कमांड नहीं है। ऊपर की व्याख्या में लिखा है कि क्या देखना है।
Q. यह कौन-सा औज़ार देता है?
node। यह JavaScript में आता है, और संदेश 9 शब्दों का है।