Служба не находится в rootDir во вторичной точке входа Angular

При компиляции библиотеки Angular я получаю эту ошибку относительно rootDir моих подбиблиотек.

library/services/src/public-api.ts:31:15 - error TS6059: File 'C:/libname/library/services/src/orders/orders.service.ts' is not under 'rootDir' 'C:/libname\library\classes\src'. 'rootDir' is expected to contain all source files.

Я пришел к пониманию, что использование относительного импорта внутри библиотеки Angular между отдельными вторичными записями - не лучшая практика. Итак, я разделил свой код на второстепенные записи + пути настройки в TSConfig.

Структура кода

library
  services
    src
      public-api.ts
    package.json
  models
    src
      public-api.ts
    package.json
  src
    public-api.ts
  package.json

TSConfig

{
  "rootDir": "./library/",
  "paths": {
    "@core/services": [ "library/services/src/public-api.ts" ]
  }
}

angular.json

{
  "projects": {
    "lib": {
      "root": "library",
      "sourceRoot": "library"
    }
  }
}

Итак, вопрос в том, как исправить импорт между отдельными вторичными точками входа или файловой структурой и обеспечить корректную компиляцию проекта? Я понимаю, что компиляция вторичных точек входа выполняется отдельно и рассматривается как отдельный проект, отсюда и ошибка. Должен ли я поэтому добавлять отдельные вторичные точки входа в качестве зависимостей одноранговых узлов?

Конечно, есть больше путей и вторичных конечных точек - но это не имеет отношения к проблеме, этого достаточно, чтобы показать мою файловую структуру и настройки


person Jiri Kralovec    schedule 02.01.2021    source источник


Ответы (1)


вы можете использовать относительный импорт, который приводит к созданию файла вне корневого каталога вторичной точки входа, например. import Users from "../../models/src/public_api.ts"

Вместо этого импортируйте модуль, используя имя библиотеки, например. import Users from "library/models"

Эта проблема из репозитория ng-packagr содержит хорошие примеры кода.

person Victor Dias    schedule 13.03.2021