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

node · JavaScript

संदेश

ReferenceError: require is not defined in ES module scope, you can use import instead

इसका मतलब

यह पिछली त्रुटि का ठीक उल्टा दर्पण है — फ़ाइल ESM के रूप में पढ़ी जा रही है और उसमें CommonJS का require है। यह लगभग हमेशा package.json में "type": "module" जोड़ने के तुरंत बाद होता है, जब पुरानी scripts अभी पेड़ में पड़ी हों। उस एक फ़ाइल को पुरानी दुनिया में ही रखना हो तो mv script.js script.cjs सबसे सीमित बदलाव है; और आगे ले जाना हो तो require को import करने के साथ __dirname तथा require.main === module भी सँभालने पड़ते हैं, जो ESM में नहीं होते।

सुधार

mv script.js script.cjs
कौन देता है
node
JavaScript
15

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

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

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

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

Q. “ReferenceError: require is not defined in ES module scope, you can use import instead” का क्या मतलब है?

यह पिछली त्रुटि का ठीक उल्टा दर्पण है — फ़ाइल ESM के रूप में पढ़ी जा रही है और उसमें CommonJS का require है। यह लगभग हमेशा package.json में "type": "module" जोड़ने के तुरंत बाद होता है, जब पुरानी scripts अभी पेड़ में पड़ी हों। उस एक फ़ाइल को पुरानी दुनिया में ही रखना हो तो mv script.js script.cjs सबसे सीमित बदलाव है; और आगे ले जाना हो तो require को import करने के साथ __dirname तथा require.main === module भी सँभालने पड़ते हैं, जो ESM में नहीं होते।

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

mv script.js script.cjs — चलाने से पहले ऊपर देख लें कि यह कमांड क्या फेंक देता है।

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

node। यह JavaScript में आता है, और संदेश 14 शब्दों का है।

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