HMR не работает с Angular 9 + IVY: тип AppComponent является частью объявлений двух модулей: AppModule и AppModule

Затронутый пакет

HMR + Плющ

Это регресс?

до плюща, это работает

Описание

Кажется, что IVY и HMR плохо сочетаются друг с другом? Однако я видел билеты на них, которые закрыты, поэтому я полагаю, что это должно быть возможно. У меня при перезагрузке после изменения кода:

Отклонение необработанного обещания: Тип AppComponent является частью объявлений двух модулей: AppModule и AppModule! Пожалуйста, подумайте о перемещении AppComponent в модуль более высокого уровня, который импортирует AppModule и AppModule. Вы также можете создать новый NgModule, который экспортирует и включает AppComponent, а затем импортирует этот NgModule в AppModule и AppModule. Тип Background является частью объявлений двух модулей: AppModule и AppModule! Пожалуйста, подумайте о переносе Background в модуль более высокого уровня, который импортирует AppModule и AppModule. Вы также можете создать новый NgModule, который экспортирует и включает Background, а затем импортировать этот NgModule в AppModule и AppModule.

...

Мы видим, как другие исследовали лучше: https://www.gitmemory.com/issue/storybookjs/storybook/8494/551763214

???? Текущая среда

Угловая версия:

ng 9.0.1

cli 9.0.1


person 1antares1    schedule 15.02.2020    source источник
comment
Вы нашли решение вопроса?   -  person Simon Dragsbæk    schedule 28.02.2020
comment
Еще нет, дорогой @ SimonDragsbæk: /   -  person 1antares1    schedule 29.02.2020


Ответы (1)


Включите AOT в файле конфигурации angular.json, который должен это сделать

Вот структура где:

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

В качестве альтернативы, просто для целей тестирования, вы можете запустить вместо этого флаг aot

ng serve --aot=true

Обновлять

Обратите внимание, что это всего лишь исправление, так что вы можете сейчас поработать над своим проектом. Команда angular работает над решением, чтобы мы могли вернуть нашу полную поддержку HMR, надеюсь, очень скоро.

Найдите здесь связанную проблему в репозитории angular https://github.com/angular/angular/issues/35265

И вот для PR, чтобы исправить это (все еще в черновике) https://github.com/angular/angular/pull/37474

person Simon Dragsbæk    schedule 02.03.2020
comment
Отлично, дорогой Саймон. Эта конфигурация сработала для меня: я понимаю, что теперь hmr должен быть доступен для запуска в сборке AoT, как это делает IVY по умолчанию. - person 1antares1; 02.03.2020
comment
Это вызывает у меня полную перезагрузку страницы ... не работает. - person TetraDev; 30.04.2020
comment
@TetraDev, но вы все равно получаете сообщение об ошибке: Type AppComponent является частью объявлений двух модулей ... - Другая часть касается правильной настройки HMR, попробуйте открыть репозиторий angularclass / hmr для получения дополнительной информации - person Simon Dragsbæk; 07.07.2020
comment
@TetraDev Я изучил проблему более подробно и соответственно обновил этот ответ. - person Simon Dragsbæk; 13.07.2020
comment
@ SimonDragsbæk Других ошибок не было. Только полное дерево зависимостей модуля перезагружается при каждом обновлении HMR. Ужасно заниматься этим почти весь 2020 год! - person TetraDev; 14.08.2020
comment
@TetraDev, что ужасно, и я думаю, что этот ответ должен служить страницей статуса для рассматриваемой проблемы - person Simon Dragsbæk; 17.08.2020
comment
@ SimonDragsbæk Я согласен. Давай, команда Angular, ты справишься! - person TetraDev; 12.11.2020