没有函数(){}的提供者!在角4

时间:2017-12-06 10:34:57

标签: angular angular-forms angular-providers

我正在为prod build

运行以下命令
ng serve --prod --env=qa

运行此命令后我没有收到任何错误但是一旦我在浏览器中运行localhost:4200/我就会收到以下错误

Uncaught Error: No provider for function (){}!
at b (core.es5.js:1169)
at core.es5.js:1207
at e._throwOrNull (core.es5.js:2649)
at e._getByKeyDefault (core.es5.js:2688)
at e._getByKey (core.es5.js:2620)
at e.get (core.es5.js:2489)
at dt (core.es5.js:9492)
at core.es5.js:9529
at pt (core.es5.js:9503)
at core.es5.js:9456

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

我的app.module.ts

中的代码块有类似的异常
providers: [
  ...
  CacheService,
  {
    provide: HttpCaching,
    useFactory: httpFactory, 
    deps: [XHRBackend, RequestOptions, CacheService]
  }
]
...
export function httpFactory(xhrBackend: XHRBackend, requestOptions: RequestOptions, cacheService: CacheService): Http {
  return new HttpCaching(xhrBackend, requestOptions, cacheService);
}

它在开发模式下运行良好,但在生产模式下运行时,我的CacheService注入失败,给出错误:未捕获(在承诺中):错误:没有函数的提供者(){}!

请告诉我们为什么会收到此错误。

答案 1 :(得分:1)

我知道已经晚了,但是我遇到了同样的错误,并使用此脚本(在npm安装后)进行了修复

"npm-cleanup" : "rimraf ./node_modules/PACKAGE_WITH_ANGULAR_MODULES/node_modules"

在我的package.json中,通过删除所有具有冲突Angular版本的软件包的node_modules。

也许它可以帮助仍然在这种错误中挣扎的人。