JWT library error: Generic type ‘ModuleWithProviders<T>’ requires 1 type argument(s) in Angular 10

For an authentication project I am using:

Angular CLI: 11.0.4 for the frontend

Node: 10.19.0 for the backend

OS: linux x64

I receive the following error after ng serve and I am not sure why that is happening, the error seems to be in the library node_modules/angular2-jwt/angular2-jwt.d.ts and not in the code I wrote:

node_modules/angular2-jwt/angular2-jwt.d.ts:88:41 – error TS2314:
Generic type ‘ModuleWithProviders’ requires 1 type argument(s).

static forRoot(config: AuthConfig): ModuleWithProviders;

Also connected to that (so I believe the errors are concurrent or even, I am afraid, interchangeable), because it was shown as soon as the 'ModuleWithProviders<T>' error was shown, so I though it would make sense to show them both as they are linked together:

Error: node_modules/angular2-jwt/angular2-jwt.d.ts:1:77 – error
TS2307: Cannot find module ‘@angular/http’ or its corresponding type

1 import { Http, Request, RequestOptions, RequestOptionsArgs, Response
} from "@angular/http";

So the difficulty I have is also due to the fact that I am not sure which parts of the code are affected so I will put for the sake of completeness the app.module.ts and the files carrying the jwt include


import { ValidateService } from './services/validate.service';
import { FlashMessagesModule } from 'angular2-flash-messages'; 
import { HttpClientModule } from '@angular/common/http';
import { AuthService } from './services/auth.service'; 
import { AuthGuard } from './guards/auth.guards';

const appRoutes: Routes = [
  {path:'', component: HomeComponent},
  {path:'register', component: RegisterComponent},
  {path:'login', component: LoginComponent},
  {path:'dashboard', component: DashboardComponent, canActivate: [AuthGuard]},
  {path:'profile', component: ProfileComponent, canActivate: [AuthGuard]},

  declarations: [
  imports: [
  providers: [ValidateService, AuthService, AuthGuard],
  bootstrap: [AppComponent]
export class AppModule { }


import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { map } from 'rxjs/operators';
import { tokenNotExpired } from 'angular2-jwt';

  providedIn: 'root'
export class AuthService {
  authToken: any;
  user: any;

  constructor(private httpClient: HttpClient) { }

  registerUser(user) {
    const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type':  'application/json',
    return this.httpClient.post('http://localhost:3000/users/register', user, httpOptions);

  authenticateUser(user) {
    const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type':  'application/json',
    return this.httpClient.post('http://localhost:3000/users/authenticate', user, httpOptions);

  getProfile() {
    const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type':  'application/json',
        Authorization: this.authToken,
    return this.httpClient.get('http://localhost:3000/users/profile', httpOptions);

  storeUserData(token, user) {
    localStorage.setItem('id_token', token);
    localStorage.setItem('user', JSON.stringify(user));
    this.authToken = token;
    this.user = user;

  loadToken() {
    const token = localStorage.getItem('id_token');
    this.authToken = token;

  loggedIn() {
    return tokenNotExpired();

  logout() {
    this.authToken = null;
    this.user = null;


import { Component, OnInit } from '@angular/core';
import { AuthService } from '../../services/auth.service';
import { Router } from '@angular/router';  

  selector: 'app-profile',
  templateUrl: './profile.component.html',
  styleUrls: ['./profile.component.css']
export class ProfileComponent implements OnInit {
  user: Object = {};

  constructor(private authService: AuthService, private router: Router) { }

  ngOnInit(): void {
    this.authService.getProfile().subscribe(profile => {
      this.user = profile;
    err => {
      return false;

I did research on how to solve the problem and here is was I was able to find so far:
this post is very useful because it has my same exact problem.
The answer calls for a bug report repo that, however, does not provide any answer to that.
The answer that was provided suggests to insert the following code:

declare module "@angular/core" {
  interface ModuleWithProviders<T = any> {
    ngModule: Type<T>;
    providers?: Provider[];

Unfortunately this was not an accepted answer and I am not sure where I can put this piece of code in any part of the app.module.ts I provided above.

I also studied this post which was also useful but did not use the suggestion above.
The strange fact I understand from the error is that it seems to come from the library itself and not from the code that I wrote.

Following this I proceeded with:

  1. rm -rf all the node_modules
  2. rm -rf the package jason file
  3. clean the cache
  4. npm install

But outcome is the same, I always receive the same error on the same library.
Please if anyone had the same problem can you share how it was solved and what should I do more to take care of that.

Source: Angular Questions