У меня есть проект my-components и проект my-showcase . my-components - это библиотека Angular, а my-showcase - приложение Angular. Иногда, когда я изменяю или добавляю компонент в библиотеку, я делаю коммит в приватный git и публикую в приватный npm. Затем я могу использовать его в других приложениях, таких как my-showcase . Перед коммитом и публикацией я бы его протестировал. До сих пор я создаю и разрабатываю новый компонент в моей витрине. После окончания я поставил его на my-components .
В то же время я импортирую свою библиотеку угловых компонентов через npm:
import {TimePickerModule} from '@company/components';
Для тестирования и разработки я изменяю это на локальный путь:
import {TimePickerModule} from '../../../../company-components/projects/components/src';
К сожалению, я получаю следующее сообщение об ошибке:
WARNING in ../company-components/node_modules/@angular/core/fesm5/core.js 15153:15-36
Critical dependency: the request of a dependency is an expression
И
core.js:12584 ERROR Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[DcStickyBitsDirective -> ElementRef]:
StaticInjectorError(Platform: core)[DcStickyBitsDirective -> ElementRef]:
NullInjectorError: No provider for ElementRef!
Очевидно, компонент из библиотеки в приложении my-showcase использует неправильную папку node_module из my-components (особенно @ angular / core), а не папку node_module из моя-витрина .
У кого-нибудь есть решение для меня или у меня неправильное понимание при работе с Angular Library и NPM? Если это было слишком непонятно, пожалуйста, дайте мне знать.