«Значение в позиции 4 в NgModule.imports MyCommonLibraryModule не является ссылкой» при импорте библиотеки Angular 9 - PullRequest
2 голосов
/ 28 февраля 2020

У меня есть два Angular проекта, которые совместно используют общий код через библиотеку Angular. Я запустил ng update в обоих проектах и ​​в своей библиотеке Angular, чтобы попытаться обновить ее с Angular 8 до 9. Скрипты миграции изменили мой файл tsconfig.app.json с

  "include": [
    "../src/**/*"
  ]

на

* Руководство по миграции 1007 *

Angular состояний

Мы обновили tsconfig.app. json, чтобы ограничить количество скомпилированных файлов. Если вы полагаетесь на другие файлы, включенные в компиляцию, например на файл typings.d.ts, вам необходимо вручную добавить его в компиляцию.

Когда я пытался запустить свое приложение (ng serve из одного из проектов, который использует библиотеку), я получил ошибку

ERROR in Failed to compile entry-point my-common-library (module as esm5) due to compilation errors:
node_modules/my-common-library/fesm5/my-common-library.js:5207:30 - error NG1010: Value at position 4 in the NgModule.imports of MyCommonLibraryModule is not a reference: [object Object]

5207                     imports: [
                                  ~
5208                         CommonModule,
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ...
5225                         MatAutocompleteModule
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5226                     ],
     ~~~~~~~~~~~~~~~~~~~~~

Если я заменил tsconfig.app.json моей библиотеки на

  "include": [
    "../src/**/*"
  ]

, то все работает отлично. Поэтому я думаю, что мои вопросы

  1. Разве ng update не предназначен для работы с библиотеками?
  2. Это ошибка?
  3. Мой "исправление" в порядке или я пропускаю некоторые Angular 9 оптимизаций? Есть ли лучший способ?

1 Ответ

0 голосов
/ 02 марта 2020

В соответствии с документами https://update.angular.io/#8 .0: 9.0 мы вам следует импортировать глубоко из указанного c компонента

import {MatAutocompleteModule} from '@angular/material/autocomplete';
@NgModule({
imports: [
MatAutocompleteModule
]
...