Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular 5 NullInjectorError: No provider for n

When I'm starting my website with ng serve everything works fine, but every try to launch a production getting an error NullInjectorError: No provider for n. I checked all services that I wrote are included in NgModule providers. Because this is the production, all files are minified and uglified, so I don't know what exactly cause the problem. Is there any way to check it or maybe it's possible to get from the error details?

ERROR Error: StaticInjectorError(G)[n -> n]: 
StaticInjectorError(Platform: core)[n -> n]: 
NullInjectorError: No provider for n!
at n.get (main.94f42881e2fdceca85d7.bundle.js:1)
at main.94f42881e2fdceca85d7.bundle.js:1
at n (main.94f42881e2fdceca85d7.bundle.js:1)
at n.get (main.94f42881e2fdceca85d7.bundle.js:1)
at main.94f42881e2fdceca85d7.bundle.js:1
at n (main.94f42881e2fdceca85d7.bundle.js:1)
at n.get (main.94f42881e2fdceca85d7.bundle.js:1)
at Pi (main.94f42881e2fdceca85d7.bundle.js:1)
at main.94f42881e2fdceca85d7.bundle.js:1
at Li (main.94f42881e2fdceca85d7.bundle.js:1)
like image 863
Igor Avatar asked Jun 07 '18 10:06

Igor


1 Answers

This is probably due to the differences of JIT (just-in-time) and AOT (ahead-of-time) compiler. Read more about this in the docs.

If you run ng serve or ng build it will use JIT by default. With the --prod flag however, AOT is used.

Try running ng serve --aot or ng serve --prod to see a more comprehensible error message. Since this is not much slower any more, I'd recommend always using the --aot flag during development. You will see problems much earlier.

like image 61
Kim Kern Avatar answered Nov 19 '22 05:11

Kim Kern