'"ERROR in getInternalNameOfClass() called on a non-ES5 class: expected AngularFireModule to have an inner class declaration"

Terminal -

    "WARNING in Invalid constructor parameter decorator in D:/New folder/SilverLife/node_modules/@angular/fire/fesm2015/angular-fire.js:
     () => [
        { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
    ]
    
    ERROR in getInternalNameOfClass() called on a non-ES5 class: expected
    AngularFireModule to have an inner class declaration"

I am facing this issue while integrating Angular firebase in my Angular 9 project. My application's package.json



Solution 1:[1]

I encountered same issue during migration from Angular8 to Angular9.

In Angular9 they introduced new generation compilation and rendering pipeline called Angular Ivy. The documentation says:

Ivy applications can be built with libraries that were created with the View Engine compiler. This compatibility is provided by a tool known as the Angular compatibility compiler (ngcc). CLI commands run ngcc as needed when performing an Angular build.

Source: https://angular.io/guide/ivy

So in order to project with "target": "es5" work, after using npm install you have to run ngcc.

You can add it in your package.json file:

{
  "scripts": {
    "postinstall": "ngcc"
  }
}

Then it should run automaticly after running npm install.

Solution 2:[2]

I had to use the following in tsconfig.json:

  "angularCompilerOptions": {
    "enableIvy": false,
  }

Not ideal but it worked.

Adding

  "scripts": {
    "postinstall": "ngcc"
  }

to package.json and changing target to es2015 in tsconfig.json didn't work - probably some other setting(s) messing with them.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 tschumann