在将一些组件从一个模块移动到另一个模块后,我在加载 Angular 2 应用程序时遇到问题。我的猜测是我在代码本身中做错了,但是我得到的错误没有帮助,我不知道这是否是 Angular 或 Webpack 的问题。
加载应用程序时出错:
Uncaught TypeError: Object prototype may only be an Object or null: undefined at setPrototypeOf (<anonymous>)
那是我在加载应用程序时遇到的错误。我知道这个问题在某种程度上与应用程序中的服务有关,但我不确定发生了什么。这是应用程序失败的地方:
是什么导致了这个问题?
我的应用程序中有四个模块:
- 应用模块
- 核心模块
- 共享模块
- 功能模块
我的目标是遵循关于模块的 Angular指南。前段时间我设置了上面列出的模块,我注意到我错误地使用了 CoreModule。除了提供要在应用程序中使用的服务之外,我还在这个模块中放置了“通用”/“可重用”组件。
在阅读了专门关于功能模块的常见问题解答后,我开始着手将这些组件移至 SharedModule。现在,这些组件中的大多数都使用了 CoreModule 中的服务。一旦我将这些组件移动到 SharedModule 并更新了必要的代码,我就开始遇到这个问题。
目前我拥有的模块是通过以下方式设置的:
- AppModule 与 CoreModule 和 FeatureModule 一起导入必要的模块
- CoreModule 提供要在应用程序中使用的服务
- SharedModule 声明和导出通用组件
- FeatureModule 声明要在特定功能中使用的组件
我不确定我是否在错误的位置导入了错误的模块,但我无法弄清楚为什么我会收到这个错误,仅仅是因为我将一个组件从一个模块移动到另一个模块。我无法真正理解使我难以理解错误所在的错误。
设置版本:
- 角度:4.0.1
- 网络包:2.3.3
- 打字稿:2.2.2
进一步的调查
如上所述,在当前设置中,我在一个 CoreModule(核心文件夹)中的整个应用程序中使用了大部分服务。使用这些服务的组件位于 SharedModule(共享文件夹)中。当这些组件位于同一个模块和文件夹中时,一切都按预期工作。
现在,当我在 SharedModule 中移动这些组件时,起初我遇到了类似于此处描述的错误,但我之前已经遇到过这种情况,我只是更改了import
s 我必须直接引用服务而不是桶。一旦我更改了这些导入,我就会得到上面显示的错误。我再次迷失了问题所在,我无法理解错误,我所做的更改是将组件移动到另一个文件夹和模块到服务所在的位置。我怀疑以某种方式创建了循环依赖,但我不确定。