Angular में HttpClient के लिए कोई प्रदाता नहीं: 2025 के 5 समाधान

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

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

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

«No provider for HttpClient» — वह त्रुटि जो सभी को परेशान करती है

\n\n

आप Angular में एक सेवा लिख रहे हैं, कंस्ट्रक्टर में HttpClient जोड़ रहे हैं, एप्लिकेशन चला रहे हैं... और फिर — धम! ब्राउज़र कंसोल लाल हो जाता है: NullInjectorError: No provider for HttpClient। परिचित लग रहा है?

\n\n

यह त्रुटि प्रत्येक Angular डेवलपर के लिए एक वास्तविक "दीक्षा संस्कार" है। Stack Overflow पर इस पर 400,000 से अधिक बार चर्चा हुई है, और 2025 में भी यह नए और अनुभवी दोनों को परेशान करती रहती है। लेकिन अच्छी खबर यह है: समाधान है, और एक नहीं।

\n\n

इस लेख में हम 5 सर्वोत्तम अभ्यासों पर चर्चा करेंगे, जिनसे Angular 18+ और TypeScript में No provider for HttpClient को हराया जा सकता है। चलिए शुरू करते हैं!

\n\n

आखिर «No provider for HttpClient» क्यों होता है?

\n\n

त्रुटि का सार सरल है: Angular को नहीं पता कि HttpClient का इंस्टेंस कैसे बनाया जाए। Angular में dependency injection (DI) का उपयोग होता है — एक कंटेनर जो ऑब्जेक्ट्स के निर्माण का प्रबंधन करता है। यदि आपने HttpClient मांगा, और DI-कंटेनर के पास इसे बनाने का कोई नुस्खा नहीं है — तो त्रुटि आती है।

\n\n

क्लासिक स्थिति:

\n\n
import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({ providedIn: 'root' })\nexport class DataService {\n  constructor(private http: HttpClient) {} // ❌ त्रुटि: No provider for HttpClient\n}\n
\n\n

Angular कहता है: "मैं देख रहा हूँ, तुम HttpClient चाहते हो, लेकिन मुझे नहीं पता कि इसे कहाँ से लाऊँ।" और यह तर्कसंगत है — हम मॉड्यूल या प्रदाता आयात करना भूल गए जो DI-कंटेनर में HttpClient को पंजीकृत करता है।

\n\n

2025 के सर्वोत्तम अभ्यास: त्रुटि ठीक करने के 5 तरीके

\n\n

1. क्लासिक: HttpClientModule (Angular 18 तक)

\n\n

सबसे पुराना और सिद्ध तरीका — एप्लिकेशन के रूट मॉड्यूल में HttpClientModule आयात करना।

\n\n
// app.module.ts\nimport { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { HttpClientModule } from '@angular/common/http';\nimport { AppComponent } from './app.component';\n\n@NgModule({\n  declarations: [AppComponent],\n  imports: [\n    BrowserModule,\n    HttpClientModule // ✅ यह रहा, उद्धारकर्ता\n  ],\n  providers: [],\n  bootstrap: [AppComponent]\n})\nexport class AppModule { }\n
\n\n

यह विधि Angular 2–17 में काम करती है। 2025 में यह अभी भी प्रासंगिक है यदि आप NgModule-based आर्किटेक्चर का उपयोग करते हैं। नुकसान: पूरा HttpClient मॉड्यूल जोड़ता है, भले ही आपको केवल मूल कार्यक्षमता की आवश्यकता हो।

\n\n

2. आधुनिक मानक: provideHttpClient() (Angular 15+)

\n\n

standalone components के आगमन के साथ, Angular ने कार्यात्मक प्रदाताओं पर स्विच कर दिया। अब मॉड्यूल के बजाय आप provideHttpClient फ़ंक्शन का उपयोग करते हैं।

\n\n
// main.ts (standalone bootstrap)\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { provideHttpClient } from '@angular/common/http';\nimport { AppComponent } from './app/app.component';\n\nbootstrapApplication(AppComponent, {\n  providers: [\n    provideHttpClient() // ✅ HttpClient पंजीकृत करें\n  ]\n}).catch(err => console.error(err));\n
\n\n

यह Angular 18+ और 2025 में अनुशंसित तरीका है। यह हल्का, तेज़ है और अतिरिक्त कोड नहीं खींचता। यदि आप एक नया एप्लिकेशन लिख रहे हैं — तो इसी का उपयोग करें।

\n\n

3. उन्नत: provideHttpClient() withFetch() के साथ

\n\n

Angular 17 से शुरू करके, XMLHttpRequest के बजाय fetch API का उपयोग करने की संभावना आई। यह प्रदर्शन में वृद्धि और आधुनिक सुविधाओं (जैसे स्ट्रीमिंग) का समर्थन देता है।

\n\n
import { bootstrapApplication } from '@angular/platform-browser';\nimport { provideHttpClient, withFetch } from '@angular/common/http';\nimport { AppComponent } from './app/app.component';\n\nbootstrapApplication(AppComponent, {\n  providers: [\n    provideHttpClient(\n                

ब्लॉग

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