Angular 5 NullInjectorError: No provider for n
Angular 5 NullInjectorError: No provider for n
当我用 ng serve
启动我的网站时,一切正常,但每次尝试启动产品时都会出现错误 NullInjectorError: No provider for n
。我检查了我编写的所有服务都包含在 NgModule 提供程序中。因为这是制作,所有的文件都被缩小和丑化了,所以我不知道到底是什么导致了这个问题。有什么方法可以检查它,或者可以从错误详细信息中获取?
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)
这可能是由于 JIT
(即时)和 AOT
(提前)编译器的差异。在 docs.
中阅读更多相关信息
如果您 运行 ng serve
或 ng build
它将默认使用 JIT
。但是,使用 --prod
标志时,会使用 AOT
。
尝试 运行宁 ng serve --aot
或 ng serve --prod
以查看更易于理解的错误消息。由于这不再慢很多,我建议在开发过程中始终使用 --aot
标志。你会更早发现问题。
我遇到了同样的问题,对我有用的是将 HttpClientModule 添加到应用程序根模块中的导入。导致错误的原因是我导入了另一个模块。
// app.module.ts
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [HttpClientModule]
})
当我用 ng serve
启动我的网站时,一切正常,但每次尝试启动产品时都会出现错误 NullInjectorError: No provider for n
。我检查了我编写的所有服务都包含在 NgModule 提供程序中。因为这是制作,所有的文件都被缩小和丑化了,所以我不知道到底是什么导致了这个问题。有什么方法可以检查它,或者可以从错误详细信息中获取?
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)
这可能是由于 JIT
(即时)和 AOT
(提前)编译器的差异。在 docs.
如果您 运行 ng serve
或 ng build
它将默认使用 JIT
。但是,使用 --prod
标志时,会使用 AOT
。
尝试 运行宁 ng serve --aot
或 ng serve --prod
以查看更易于理解的错误消息。由于这不再慢很多,我建议在开发过程中始终使用 --aot
标志。你会更早发现问题。
我遇到了同样的问题,对我有用的是将 HttpClientModule 添加到应用程序根模块中的导入。导致错误的原因是我导入了另一个模块。
// app.module.ts
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [HttpClientModule]
})