Не могу связать мою библиотеку Angular с другой библиотекой Angular

Контекст

Я создал несколько независимых угловых библиотек в разных папках:

  • / домашний / пользователь / lib1
  • / домашний / пользователь / lib2
  • / домашний / пользователь / lib3

Библиотеки lib2 и lib3 зависят от библиотеки lib1.

// Example of the lib3.module.ts 
import {Lib1Module} from '@libs/lib1';

@NgModule({
  declarations: [Lib3Component],
  imports: [
    Lib1Module
  ],
  exports: [Lib3Component]
})
export class Lib3Module { }

Однако, когда я создаю символическую ссылку lib1 и импортирую ее в lib2 и lib3 с помощью команды npm link lib1, у меня возникает проблема сборки (ниже, вы можете увидеть сообщение об ошибке).

ERROR: : Unexpected value 'Lib1Module in /home/user/Documents/multiple-angular-lib/lib1/dist/libs/lib1/libs-lib1.d.ts' imported by the module 'Lib2Module in /home/user/Documents/multiple-angular-lib/lib2/projects/libs/lib2/src/lib/lib2.module.ts'. Please add a @NgModule annotation.

Самое удивительное во всем этом то, что если я разверну свой компонент в официальном репозитории npm, он заработает. Та же структура и файлы! Значит, проблема с символической ссылкой.

Что я пробовал

Я попытался следовать предлагаемым здесь решениям:

Как воспроизвести мою проблему

Я воспроизвел здесь пример: https://github.com/fjoalland/multiple-angular-lib/tree/master

Просто следуйте инструкциям, и у вас должна быть такая же ошибка, как и у меня.

Сообщение об ошибке

Ниже, полная ошибка, которую я получил, когда пытался собрать lib2 с символической ссылкой lib1

[root@user lib2]# ng build
Building Angular Package

------------------------------------------------------------------------------
Building entry point '@libs/lib2'
------------------------------------------------------------------------------
Compiling TypeScript sources through ngc
ERROR: : Unexpected value 'Lib1Module in /home/user/Documents/multiple-angular-lib/lib1/dist/libs/lib1/libs-lib1.d.ts' imported by the module 'Lib2Module in /home/user/Documents/multiple-angular-lib/lib2/projects/libs/lib2/src/lib/lib2.module.ts'. Please add a @NgModule annotation.

An unhandled exception occurred: : Unexpected value 'Lib1Module in /home/user/Documents/multiple-angular-lib/lib1/dist/libs/lib1/libs-lib1.d.ts' imported by the module 'Lib2Module in /home/user/Documents/multiple-angular-lib/lib2/projects/libs/lib2/src/lib/lib2.module.ts'. Please add a @NgModule annotation.

See "/tmp/ng-V1D4qF/angular-errors.log" for further details.

Содержимое файла angular-error.log:

[error] Error: : Unexpected value 'Lib1Module in D:/Documents/multiple-angular-lib/lib1/dist/libs/lib1/libs-lib1.d.ts' imported by the module 'Lib2Module in D:/Documents/multiple-angular-lib/lib2/projects/libs/lib2/src/lib/lib2.module.ts'. Please add a @NgModule annotation.

    at Object.<anonymous> (D:\Documents\multiple-angular-lib\lib2\node_modules\ng-packagr\lib\ngc\compile-source-files.js:73:19)
    at Generator.next (<anonymous>)
    at fulfilled (D:\Documents\multiple-angular-lib\lib2\node_modules\ng-packagr\lib\ngc\compile-source-files.js:4:58)

person Cogno    schedule 01.08.2019    source источник
comment
Пожалуйста, опубликуйте журнал ошибок, который он генерирует   -  person Robert garcia    schedule 01.08.2019
comment
Здесь есть журнал - ›См. /Tmp/ng-V1D4qF/angular-errors.log   -  person Robert garcia    schedule 01.08.2019
comment
@Robertgarcia, спасибо за помощь! Я отредактировал свой пост, и вы можете увидеть содержимое журнала angular-error.log в конце. Вы пробовали github, который я поместил в свой пост? У вас такая же ошибка? Спасибо еще раз   -  person Cogno    schedule 01.08.2019
comment
Ни у кого нет ответа на этот вопрос? Я не понимаю почему это невозможно   -  person Fasco    schedule 06.08.2019


Ответы (1)


Вот мое решение вашей проблемы: https://github.com/angular/angular/issues/31989#issuecomment-523396480

Есть проблема с компиляцией angular и тем, как он управляет символической ссылкой из NPM. Поэтому вам нужно использовать yarn вместо npm, просто чтобы написать свою символическую ссылку (ссылку на пряжу).

person Fasco    schedule 27.08.2019