简短的背景故事
我已经对Angular 8应用程序进行了多次升级,例如服务器端渲染和Google Analytics(分析)。正如大多数开发人员所做的那样,我先编写代码,然后进行测试,然后继续执行下一个任务。通常,我在开发时会使用ng serve
运行该应用程序。
使用服务器端渲染,以测试速度,延迟加载图像等,您需要使用在生成的JS文件上运行的节点快速服务器。构建完成后,我使用Node prerender
(我的js文件是prerender.js)来查看应用程序在服务器上的预渲染效果。
当我运行此命令时,不会出现任何错误,并且我知道我的prender文件将在端口4000上启动本地服务器。
问题
[运行节点快递服务器时出现错误,而使用ng serve
运行时却未得到错误,我最近看到一个错误消息:
Unhandled Promise rejection: Cannot read property 'subscribe' of undefined ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Cannot read property 'subscribe' of undefined
at new ApplicationRef (C:\4towerdevelopment\dist-stage\server\main.js:45910:37)
at _createClass (C:\4towerdevelopment\dist-stage\server\main.js:37184:20)
at _createProviderInstance (C:\4towerdevelopment\dist-stage\server\main.js:37138:26)
at initNgModule (C:\4towerdevelopment\dist-stage\server\main.js:37044:32)
at new NgModuleRef_ (C:\4towerdevelopment\dist-stage\server\main.js:38176:9)
at Object.createNgModuleRef (C:\4towerdevelopment\dist-stage\server\main.js:38159:12)
at NgModuleFactory_.create (C:\4towerdevelopment\dist-stage\server\main.js:50821:25)
at C:\4towerdevelopment\dist-stage\prerender.js:29175:43
at ZoneDelegate.invoke (C:\4towerdevelopment\dist-stage\prerender.js:481:26)
at Object.onInvoke (C:\4towerdevelopment\dist-stage\prerender.js:28683:33) TypeError: Cannot read property 'subscribe' of undefined
at new ApplicationRef (C:\4towerdevelopment\dist-stage\server\main.js:45910:37)
at _createClass (C:\4towerdevelopment\dist-stage\server\main.js:37184:20)
at _createProviderInstance (C:\4towerdevelopment\dist-stage\server\main.js:37138:26)
at initNgModule (C:\4towerdevelopment\dist-stage\server\main.js:37044:32)
at new NgModuleRef_ (C:\4towerdevelopment\dist-stage\server\main.js:38176:9)
at Object.createNgModuleRef (C:\4towerdevelopment\dist-stage\server\main.js:38159:12)
at NgModuleFactory_.create (C:\4towerdevelopment\dist-stage\server\main.js:50821:25)
at C:\4towerdevelopment\dist-stage\prerender.js:29175:43
at ZoneDelegate.invoke (C:\4towerdevelopment\dist-stage\prerender.js:481:26)
at Object.onInvoke (C:\4towerdevelopment\dist-stage\prerender.js:28683:33)
这最接近让我了解实际导致问题的原因是让我知道某个地方的提供程序正在导致此错误。看起来有些东西应该是可观察的,而不是订阅。除此之外,我想我只是开始寻找我的提供者。我的问题是:
ng serve
开发时,如何强制Angular引发此错误?谢谢。
看起来好像是ApplicationRef
触发了错误,并且该类由Angular内核内部提供。
在类的构造函数中可能会失败,并且在区域可观察对象上有对subscribe
的一些调用。我认为您不会在源代码中找到与该错误直接相关的任何内容。它看起来像一个构建配置问题。
我不知道什么可能会导致此问题,但是我将使用SSR启动一个新项目并将差异与您当前的项目进行比较。