Вложенные угловые модули: не удается разрешить службу из пакета npm

#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. Пожалуйста, попробуйте какую-нибудь демонстрацию с приведенными выше инструкциями. мы можем получить несколько идей