#angular #angular-cli
#угловые #angular-cli
Вопрос:
У меня есть приложение Angular 6, которое имеет следующую структуру вложенных модулей:
├── node_modules/
├── package.json <- no mention of ngx-cookie-service
└── src/
└── app/
├── app.module.ts
└── sub-module/
├── node_modules/
├── package.json <- has dependency for ngx-cookie-service
└── sub.module.ts
Цель этой структуры заключается в том, что подмодуль может быть опубликован как пакет npm, а appmodule предоставляет пользовательский интерфейс веб-сайта для использования функций подмодуля.
Я получаю следующую ошибку при попытке запуска ng build --aot
для корневого проекта (appmodule):
ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve 'ngx-cookie-service/cookie-
service/cookie.service' in 'myappsrcapp'
Примечания:
- Пакет npm третьей стороны с ошибкой
ngx-cookie-service
объявлен как зависимость в package.json в разделеsub-module
. - sub.module.ts импортируется в @NgModule в app.module.ts
- Если я добавлю
ngx-cookie-service
в качестве devDependency корневой package.json, сборка завершится успешно - Сборка и обслуживание без
--aot
работает отлично
Мой первый вопрос:
Это проблема в моей конфигурации или это что-то, по поводу чего я должен связаться с автором ngx-cookie-service
?
И еще один последующий вопрос:
Как устранить эту ошибку, не добавляя зависимость для ngx-cookie-service
в корневой package.json? (Поскольку этому приложению самому не нужна служба cookie, она нужна только подмодулю)
Комментарии:
1. вам не обязательно использовать node_modules в рабочей области. Вы должны установить ngx-cookie-service в свой корневой package.json. Angular будет рассматривать только корневые node_modules. Я не знаю, возможно ли использовать два node_modules
Ответ №1:
Я предлагаю вам создать рабочее пространство angular, где вы сможете создавать несколько библиотек и приложений. https://angular.io/guide/workspace-config
Плюсы
- Вы можете опубликовать свою библиотеку в npm
- вы можете совместно использовать эту библиотеку со своими приложениями в рабочей области.
прочитайте этот пост для лучшего понимания
https://blog.angularindepth.com/angular-workspace-no-application-for-you-4b451afcc2ba
Комментарии:
1. Спасибо за ответ. Означает ли это, что моя библиотека npm (подмодуль) будет иметь зависимости от каждого пакета npm, который требуется демонстрационному пользовательскому интерфейсу, но не требуется библиотеке?
2. у вас может быть несколько файлов package.json, а не несколько папок node_modules. То же самое делается с помощью angular workspace. Пожалуйста, попробуйте какую-нибудь демонстрацию с приведенными выше инструкциями. мы можем получить несколько идей