Angular 10中的主题实例化错误
我有一个角度应用程序,它可以通过Angular 10中的主题实例化错误,angular,typescript,rxjs,angular10,Angular,Typescript,Rxjs,Angular10,我有一个角度应用程序,它可以通过ng service正常工作。应用程序还可以通过ng build--prod正确构建,但当我在浏览器中运行生成的源代码时,会出现以下错误: TypeError: $m.Subject is not a constructor at new e (error-handling.service.ts:8) at core.js:21140 at Rs (core.js:21136) at Os (core.js:21075) a
ng service
正常工作。应用程序还可以通过ng build--prod
正确构建,但当我在浏览器中运行生成的源代码时,会出现以下错误:
TypeError: $m.Subject is not a constructor
at new e (error-handling.service.ts:8)
at core.js:21140
at Rs (core.js:21136)
at Os (core.js:21075)
at Gs.get (core.js:21628)
at pu (core.js:21997)
at du (core.js:21876)
at su (core.js:21753)
at Xd (core.js:30266)
at Yd (core.js:30175)
at Object.dh [as createRootView] (core.js:30688)
at Ns.create (core.js:21357)
at io.create (core.js:19158)
at e.bootstrap (core.js:28031)
at core.js:27742
at Array.forEach (<anonymous>)
at e._moduleDoBootstrap (core.js:27742)
at core.js:27712
at l.invoke (zone-evergreen.js:364)
at Object.onInvoke (core.js:27149)
at l.invoke (zone-evergreen.js:363)
at i.run (zone-evergreen.js:123)
at zone-evergreen.js:857
at l.invokeTask (zone-evergreen.js:399)
at Object.onInvokeTask (core.js:27137)
at l.invokeTask (zone-evergreen.js:398)
at i.runTask (zone-evergreen.js:167)
at m (zone-evergreen.js:569)
在我将项目升级到10(也升级了TypeScript)之后,代码在Angular 9上运行良好,但它已停止工作。为什么它通过
ng-serve
工作并在生产环境中运行时崩溃,这让人有点困惑。另外,为什么在编译过程中没有捕获到此错误
我的项目禁用了Ivy。问题肯定是您导入的<代码>主题需要从
rxjs
导入
import { Subject } from "rxjs";
有一个完整的rxjs compat
模块,甚至允许这样的操作。我敢肯定,所有这些向后兼容性支持都已被放弃。这基本上来自RXJSV5。我猜你现在正在使用RxJSV7,他们肯定会把它放在那里
你可以阅读更多关于这方面的内容。您可以看到,
Subject
需要直接从rxjs
导入。如果您的Linter在抱怨,那么这些规则确实需要更新,因为rxjs v6已经发布两年多了Subject=new Subject()你能试试这个吗?对吗<代码>从“rxjs/Subject”导入{Subject}代码>?我通常看到它直接来自rxjs
,就像这样:import{Subject}来自“rxjs”代码>@micronyks-否change@BizzyBob-从rxjs
导入被列入黑名单,Linter对此表示不满。我的代码在以前的Angular版本中运行良好,所以我认为这不是问题所在。看来你是对的。实际上,我很惊讶,因为我认为从rxjs
导入是不好的,因为它导入了所有内容,而rxjs/Subject
只导入了生成较小捆绑包的子集。