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

ID : 131311

viewed : 4

Tags : angularfirebaseangularfireangular9angular

Top 4 Answer for angular - "ERROR in getInternalNameOfClass() called on a non-ES5 class: expected AngularFireModule to have an inner class declaration"

vote vote

92

Try changing target in the compilerOptions of your tsconfig.json from es5 to es2015

vote vote

90

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.

vote vote

72

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.

vote vote

65

Top 3 video Explaining angular - "ERROR in getInternalNameOfClass() called on a non-ES5 class: expected AngularFireModule to have an inner class declaration"

Related QUESTION?