#angular #angular-library #ng-packagr
#angular #angular-библиотека #ng-packagr
Вопрос:
При компиляции библиотеки 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:/libnamelibraryclassessrc'. '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"
}
}
}
Итак, вопрос в том, как исправить импорт между отдельными вторичными точками входа или файловой структурой и обеспечить правильную компиляцию проекта? Я понимаю, что компиляция вторичных точек входа является отдельной и «рассматривается как отдельный проект», отсюда и ошибка. Должен ли я поэтому добавлять отдельные вторичные точки входа в качестве одноранговых зависимостей?
Конечно, есть больше путей и вторичных конечных точек, но это не имеет отношения к проблеме, этого достаточно, чтобы показать мою файловую структуру и настройки
Ответ №1:
вы можете использовать относительный импорт, который приводит к файлу за пределами корневого каталога вторичной точки входа, например. import Users from "../../models/src/public_api.ts"
Вместо этого импортируйте модуль, используя имя библиотеки, например. import Users from "library/models"
Этот выпуск из репозитория ng-packagr содержит хорошие примеры кода.
Ответ №2:
также может произойти, когда помощник по импорту IDE генерирует нерелятивный путь (например, «src / услуги / ..» вместо «.. / .. / services»)
на самом деле возникла проблема в части первичной точки входа библиотеки, когда компонент импортировал службу, используя этот тип автоматически сгенерированного пути (однако при компиляции вторичной точки входа возникает ошибка, поди разберись …)