Angular 9: значение в позиции X в NgModule.imports не является ссылкой

Я обновил приложение Angular с v8 до v9. Проект импортирует пользовательскую библиотеку пользовательского интерфейса с использованием Angular 8 и moment.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) локаль DE moment.js импортируется следующим образом:

import 'moment/locale/de';


  1. Также возникают ошибки компиляции:
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 о глубоких ссылках, но не имел рабочего решения.


person Francesco    schedule 17.03.2020    source источник
comment
у меня такая же проблема, вы хоть представляете, что пошло не так?   -  person Viszman    schedule 16.04.2020


Ответы (6)


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

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

to:

export class ThemeModule {
  static forRoot(): ModuleWithProviders<ThemeModule> {
    return {
      ngModule: ThemeModule,
      providers: [
        ...NbThemeModule.forRoot(
          {
            name: 'default',
          },
          [DEFAULT_THEME, COSMIC_THEME, CORPORATE_THEME, DARK_THEME],
        ).providers,
      ],
    };
  }
}
person Viszman    schedule 16.04.2020
comment
Спасибо! Один из моих модулей сделал это неправильно. Документы: angular.io/guide/migration-module-with-providers - person Przemek Pobuta; 14.06.2020

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

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

person Francesco    schedule 16.04.2020

В моем случае, я думаю, была некоторая несовместимость между некоторыми из импортированных угловых библиотек. Думаю, раньше я вручную увеличивал @angular/material до 9.2.3, не затрагивая другие библиотеки angular.

Когда я создал новый репозиторий, используя: ng new test-ng9, а затем добавил материал angular ng add @angular/material, проблем с компиляцией не было.

Итак, я взял зависимости, которые angular cli включил во временное репо, и заменил те, что были в моем существующем репозитории. Тогда все заработало нормально.

До:

    "@angular/animations": "~9.1.6",
    "@angular/cdk": "9.1.1",
    "@angular/common": "~9.1.1",
    "@angular/compiler": "~9.1.1",  
    "@angular/core": "~9.1.1",
    "@angular/forms": "~9.1.1",
    "@angular/material": "9.2.3",
    "@angular/platform-browser": "~9.1.1",
    "@angular/platform-browser-dynamic": "~9.1.1",
    "@angular/router": "~9.1.1",

После:

    "@angular/animations": "~9.1.6",
    "@angular/cdk": "9.1.1",    
    "@angular/common": "~9.1.6",
    "@angular/compiler": "~9.1.6",
    "@angular/core": "~9.1.6",
    "@angular/forms": "~9.1.6",
    "@angular/material": "^9.2.4",
    "@angular/platform-browser": "~9.1.6",
    "@angular/platform-browser-dynamic": "~9.1.6",
    "@angular/router": "~9.1.6",
person Clement    schedule 19.05.2020

# 2 случилось со мной после того, как я случайно использовал npm link в папке проекта вместо папки dist.

person Jony Adamit    schedule 07.07.2020

У меня есть эта ошибка, потому что я удалил все из одного из моих компонентов ts файл, чтобы скопировать и вставить код моего инструктора

затем я удалил это объявление компонента из моего файла app.module.ts, тогда он сработал

person Sinan M    schedule 28.06.2021

вы могли использовать npm i, и редактор мог неправильно сгенерировать сборку. Попробуйте перезапустить ваш редактор. Перезагрузка у меня сработала. Я использовал VSCode

person Muhammad Umar    schedule 09.07.2021