Angular - добавление локального внешнего модуля в приложение - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть проект 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? Если это было слишком непонятно, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 19 ноября 2018

У меня есть обходной путь. Я добавляю следующее к tsconfig.json :

"@company/components": [
    "../path/to/projects/components/src"
],

"@angular/*": [
    "node_modules/@angular/*"
]

Но я не считаю это решение очень чистым. Если я правильно понимаю, проблема в том, что Webpack берет материал Angular из библиотеки компонентов, а не из проекта витрины. С помощью этого обходного пути он переопределяет неправильные пути.

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