TypeScript त्रुटि TS2304: नाम 'require' नहीं मिल सका — 2025 में कैसे ठीक करें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: "आपका पुराना मित्र require अचानक अदृश्य हो गया"

\n\n

आप TypeScript में लिख रहे हैं, सब कुछ सुचारू रूप से चल रहा है, और अचानक — बैम! कंपाइलर एक बर्फीला संदेश देता है: "TS2304: नाम 'require' नहीं मिल सका"। परिचित लगता है? यदि आप JavaScript से TypeScript पर स्विच कर रहे हैं या Node.js प्रोजेक्ट्स पर काम कर रहे हैं, तो आपने निश्चित रूप से इस भूत का सामना किया होगा। 2025 में, यह त्रुटि अभी भी Stack Overflow पर शीर्ष पर है (200,000 से अधिक व्यूज़), लेकिन अच्छी खबर यह है: इसे हराना आसान है।

\n\n

इस लेख में, हम समझेंगे कि TypeScript require को क्यों नहीं देखता, कौन सी कॉन्फ़िगरेशन बदलनी है और — सबसे महत्वपूर्ण — आधुनिक कोड कैसे लिखें ताकि इस समस्या को हमेशा के लिए भूल जाएँ। चलिए शुरू करते हैं!

\n\n

TS2304 क्या है और यह क्यों दिखाई देता है?

\n\n

त्रुटि TS2304: नाम 'require' नहीं मिल सका तब उत्पन्न होती है जब TypeScript वैश्विक फ़ंक्शन require की परिभाषा नहीं ढूँढ पाता। JavaScript में (विशेष रूप से Node.js वातावरण में), require CommonJS शैली में मॉड्यूल आयात करने के लिए एक मूल फ़ंक्शन है। लेकिन TypeScript डिफ़ॉल्ट रूप से Node.js वातावरण के बारे में नहीं जानता। यह सोचता है कि आप ब्राउज़र में काम कर रहे हैं, जहाँ require मौजूद नहीं है।

\n\n

सामान्य परिदृश्य:

\n\n
// app.ts\nconst express = require('express');\n// ❌ TS2304: नाम 'require' नहीं मिल सका\n
\n\n

2025 में, TypeScript (पहले से ही संस्करण 5.x) डिफ़ॉल्ट रूप से ES-मॉड्यूल (import/export) का उपयोग करता है। यदि आप सही कॉन्फ़िगरेशन के बिना require का उपयोग करने का प्रयास करते हैं, तो कंपाइलर उचित रूप से विरोध करेगा।

\n\n

त्रुटि के मुख्य कारण:

\n
    \n
  • पैकेज @types/node स्थापित नहीं है — TypeScript Node.js के वैश्विक API के बारे में नहीं जानता।
  • \n
  • tsconfig.json की गलत कॉन्फ़िगरेशन — types: ["node"] गायब है या module CommonJS से मेल नहीं खाता।
  • \n
  • पुराने सिंटैक्स का उपयोग — 2025 में require के बजाय import का उपयोग करना बेहतर है।
  • \n
  • CommonJS और ESModules के बीच संघर्ष — प्रोजेक्ट ES-मॉड्यूल के लिए सेट है, लेकिन आप CommonJS शैली में कोड लिख रहे हैं।
  • \n
\n\n

तरीका #1: @types/node स्थापित करना (त्वरित समाधान)

\n\n

सबसे सरल और सामान्य तरीका TypeScript को Node.js "देखने" देना है। इसके लिए टाइप्स पैकेज स्थापित करें:

\n\n
npm install --save-dev @types/node\n
\n\n

इसके बाद tsconfig.json में जोड़ें:

\n\n
{\n  "compilerOptions": {\n    "types": ["node"]\n  }\n}\n
\n\n

अब TypeScript require, __dirname, process और Node.js के अन्य वैश्विक ऑब्जेक्ट्स के बारे में जानता है। त्रुटि गायब हो जाएगी।

\n\n

लाभ: तेज़, "बॉक्स से बाहर" काम करता है।
\nनुकसान: आप पुराने CommonJS सिंटैक्स का उपयोग जारी रखते हैं।

\n\n

तरीका #2: moduleResolution और esModuleInterop कॉन्फ़िगर करना

\n\n

यदि आप एक ऐसे प्रोजेक्ट में require का उपयोग करना चाहते हैं जो आधुनिक मॉड्यूल के लिए सेट है, तो tsconfig.json में निम्नलिखित विकल्प जोड़ें:

\n\n
{\n  "compilerOptions": {\n    "module": "commonjs",\n    "moduleResolution": "node",\n    "esModuleInterop": true,\n    "allowSyntheticDefaultImports": true\n  }\n}\n
\n\n
    \n
  • "module": "commonjs" — स्पष्ट रूप से निर्दिष्ट करता है कि आउटपुट कोड CommonJS प्रारूप में होगा।
  • \n
  • "moduleResolution": "node" — मॉड्यूल को Node.js की तरह खोजें (पहले node_modules)।
  • \n
  • "esModuleInterop": true — CommonJS-मॉड्यूल को import के माध्यम से आयात करने की अनुमति देता है (और इसके विपरीत)।
  • \n
  • "allowSyntheticDefaultImports": true — डिफ़ॉल्ट निर्यात के बिना मॉड्यूल से डिफ़ॉल्ट आयात की अनुमति देता है।
  • \n
\n\n

कार्यशील कोड का उदाहरण:

\n\n
import express = require('express');\n// या यहाँ तक कि\nconst express                

ब्लॉग

पुस्तक अनुशंसाएँ