Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
606 views
in Technique[技术] by (71.8m points)

javascript - 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)
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...