首页 > 解决方案 > HMR 使用 Angular 9 + IVY 失败:类型 AppComponent 是 2 个模块声明的一部分:AppModule 和 AppModule

问题描述

受影响的包裹

HMR + 常春藤

这是回归吗?

常春藤之前,它有效

描述

似乎IVY和HMR一起玩得不好?但是我看到他们的门票是关闭的,所以我想应该是可能的。我在代码更改后重新加载:

未处理的 Promise 拒绝:类型 AppComponent 是 2 个模块声明的一部分:AppModule 和 AppModule!请考虑将 AppComponent 移至导入 AppModule 和 AppModule 的更高模块。您还可以创建一个新的 NgModule,它导出并包含 AppComponent,然后在 AppModule 和 AppModule 中导入该 NgModule。背景类型是 2 个模块声明的一部分:AppModule 和 AppModule!请考虑将 Background 移至导入 AppModule 和 AppModule 的更高模块。您还可以创建一个新的 NgModule,它导出并包含 Background,然后在 AppModule 和 AppModule 中导入该 NgModule。

...

我们可以看到其他人如何更好地调查: https ://www.gitmemory.com/issue/storybookjs/storybook/8494/551763214

当前环境

角度版本:

ng 9.0.1

cli 9.0.1

标签: angularwebpack-hmrhot-module-replacementangular9angular-ivy

解决方案


在 angular.json 配置文件中切换 AOT,应该这样做

这是 where 的结构:

{
  "projects": {
    "x": {
      "architect": {
        "build": {
          "options": {
            "aot": true,
          },
          "configurations": {
            "local": {
              "aot": true
            },

或者,仅出于测试目的,您可以使用aot标志运行

ng serve --aot=true

更新

请注意,这只是修复,因此您现在可以实际处理您的项目。Angular 团队正在研究一个解决方案,以便我们能够很快获得我们对 HMR 的全面支持。

在 angular repo https://github.com/angular/angular/issues/35265中查找相关问题

这里是 PR 用来修复它(仍在草稿中) https://github.com/angular/angular/pull/37474


推荐阅读