【问题标题】:TypeError: Cannot read property 'ngInjectableDef' of undefinedTypeError:无法读取未定义的属性“ngInjectableDef”
【发布时间】:2020-04-16 13:13:05
【问题描述】:

我目前正在开发一个运行良好的应用程序,突然间我收到了这个错误。除了我们正在开发 Angular 8 并且另一个开发人员使用 Angular 9 之外,什么都没有改变。在我们合并代码后,这个错误开始随机出现。

我删除了 node_modules 文件夹并运行了 npm cache clean --force 并重新安装了 npm,但仍然出现此错误。非常感谢任何帮助。

错误是:

ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'ngInjectableDef' of undefined
TypeError: Cannot read property 'ngInjectableDef' of undefined
    at getInjectableDef (core.js:361)
    at resolveNgModuleDep (core.js:30377)
    at NgModuleRef_.get (core.js:31578)
    at injectInjectorOnly (core.js:734)
    at ɵɵinject (core.js:744)
    at injectArgs (core.js:837)
    at core.js:16346
    at _callFactory (core.js:30486)
    at _createProviderInstance (core.js:30429)
    at resolveNgModuleDep (core.js:30388)
    at resolvePromise (zone-evergreen.js:797)
    at resolvePromise (zone-evergreen.js:754)
    at zone-evergreen.js:858
    at ZoneDelegate.invokeTask (zone-evergreen.js:391)
    at Object.onInvokeTask (core.js:39680)
    at ZoneDelegate.invokeTask (zone-evergreen.js:390)
    at Zone.runTask (zone-evergreen.js:168)
    at drainMicroTaskQueue (zone-evergreen.js:559)
    at ZoneTask.invokeTask [as invoke] (zone-evergreen.js:469)
    at invokeTask (zone-evergreen.js:1603)

【问题讨论】:

  • 我想你的答案可以在here找到
  • 在重新安装之前您是否运行过flush node cache
  • 如果要扩展任何类,请确保在构造函数中调用super 方法
  • @Jeroenouw 和@Kenny 我的代码与调用super 无关,因为我没有扩展任何类。是的,我还刷新了节点缓存。

标签: angular


【解决方案1】:

除了已经在 SO 上的其他答案之外,我将发布我的发现,因为这可能会在未来对其他人有所帮助。

其他开发人员从应用程序中删除了一个服务文件并签入了代码。我们合并了,一切都很好。

ng build --prod 一切顺利

ng serve 很好地服务了应用程序

应用程序可以运行,但是当我们导航到仍然引用该文件并被注入构造函数的组件时,出现了这个问题。 Visual Studio 2019 没有给出任何错误,因此有点奇怪。

可能是一种罕见的情况,因为没有人会经常删除文件,但希望这有助于其他人遇到这种情况。

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    相关资源
    最近更新 更多