Angular 9: значение в позиции X в NgModule.imports не является ссылкой - PullRequest
2 голосов
/ 17 марта 2020

Я обновил Angular приложение с v8 до v9. Проект импортирует пользовательскую библиотеку пользовательского интерфейса, используя Angular 8 и момент. js.

Когда я ее создаю:

  1. Он генерирует предупреждение:
WARNING in Entry point '@myLib/catalogue' contains deep imports into
 '/Users/xyz/Projects/forms-frontend/node_modules/moment/locale/de'.
This is probably not a problem, but may cause the compilation of entry points to be out of order.

В файле @myLib/catalogue.js библиотеки (внутри папки node_modules) момент. js Язык локали DE импортируется следующим образом:

import 'moment/locale/de';


Ошибки компиляции также вызываются:
ERROR in Failed to compile entry-point @myLib/catalogue (es2015 as esm2015) due to compilation errors:
node_modules/@myLib/catalogue/fesm2015/catalogue.js:213:26 - error NG1010: Value at position 2 in the NgModule.imports of FormInputModule is not a reference: [object Object]

213                 imports: [
                             ~
214                     CommonModule,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
... 
219                     TranslateModule
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
220                 ],
    ~~~~~~~~~~~~~~~~~

Кажется, что текст предупреждения точно объясняет ошибку компиляции, где позиция (2 в данном случае) отсутствует диапазона массива импорта.

Я видел разные статьи / проблемы github о глубоких ссылках, но не работающее решение.

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

вам нужно изменить свою собственную сборку модулей, поэтому вам нужно внести аналогичные изменения в приведенные ниже, в моем случае мне нужно было изменить:

export class ThemeModule {
  static forRoot(): ModuleWithProviders {
    return <ModuleWithProviders>{
      ngModule: ThemeModule,
      providers: [
        ...NbThemeModule.forRoot(
          {
            name: 'default',
          },
          [DEFAULT_THEME, COSMIC_THEME, CORPORATE_THEME, DARK_THEME],
        ).providers,
      ],
    };
  }
}

на:

export class ThemeModule {
  static forRoot(): ModuleWithProviders<ThemeModule> {
    return {
      ngModule: ThemeModule,
      providers: [
        ...NbThemeModule.forRoot(
          {
            name: 'default',
          },
          [DEFAULT_THEME, COSMIC_THEME, CORPORATE_THEME, DARK_THEME],
        ).providers,
      ],
    };
  }
}
0 голосов
/ 16 апреля 2020

В моем случае проблема была связана с импортированной библиотекой, которая не была совместима с Angular v9 (помимо прочего, она не использовала глубокие ссылки на Angular Материал и момент. js).

Мне повезло, так как библиотека является интерном, и я мог исправить эти моменты и опубликовать sh. После этого он построен без каких-либо проблем или изменений в моем проекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...