Я пытаюсь опубликовать библиотеку компонентов Angular 6+ для рабочего проекта и столкнулся с подозрительной проблемой, которая выглядит как ошибка компилятора.
Это репозиторий исходного кода, но у меня естьприведенный ниже код также демонстрирует проблему.
https://github.com/bradkovach/porcelain/tree/master/projects/porcelain/src
Проект был создан с ng generate library
и теперь теоретически готов к отправке в npm.Всякий раз, когда я запускаю ng build porcelain
, проект компилируется без ошибок, но в скомпилированном результате отсутствуют определения типов для двух компонентов SimpleRefinerComponent
и DateRefinerComponent
.Я обнаружил следующую статью StackOverflow , которая, по-видимому, страдала той же проблемой, но заявленное решение не сработало для меня.
Я создал проект на отдельной машине с помощью этих команд...
git clone git@github.com:bradkovach/porcelain.git
npm install
ng build porcelain
Вот как выглядит файл public_api.ts
в projects/porcelain/src/public_api.ts
...
/**
* Porcelain exposed components.
*/
export { PorcelainModule } from './lib/porcelain.module';
export { PorcelainComponent } from './lib/porcelain.component';
export { SimpleRefinerModule } from './lib/simple-refiner/simple-refiner.module';
export { SimpleRefinerComponent } from './lib/simple-refiner/simple-refiner.component';
export { DateRefinerModule } from './lib/date-refiner/date-refiner.module';
export { DateRefinerComponent } from './lib/date-refiner/date-refiner.component';
export { RefinersModule } from './lib/refiners/refiners.module';
export { RefinersComponent } from './lib/refiners/refiners.component';
export * from './lib/refiners/IOption';
export * from './lib/refiners/IOptions';
export * from './lib/refiners/IRefiner';
export * from './lib/refiners/IRefinerValue'
Когда я запускаю ng build
, он создает следующий public_api.файл d.ts ...
/**
* Porcelain exposed components.
*/
export { PorcelainModule } from './lib/porcelain.module';
export { PorcelainComponent } from './lib/porcelain.component';
export { SimpleRefinerModule } from './lib/simple-refiner/simple-refiner.module';
export { SimpleRefinerComponent } from './lib/simple-refiner/simple-refiner.component';
export { DateRefinerModule } from './lib/date-refiner/date-refiner.module';
export { DateRefinerComponent } from './lib/date-refiner/date-refiner.component';
export { RefinersModule } from './lib/refiners/refiners.module';
export { RefinersComponent } from './lib/refiners/refiners.component';
export * from './lib/refiners/IOption';
export * from './lib/refiners/IOptions';
export * from './lib/refiners/IRefiner';
export * from './lib/refiners/IRefinerValue';
Экспорты SimpleRefinerComponent
и DateRefinerComponent
сообщают о следующих ошибках соответственно
Cannot find module './lib/simple-refiner/simple-refiner.component'.ts(2307)
Cannot find module './lib/date-refiner/date-refiner.component'.ts(2307)
Я пробовал
- Вышеупомянутый вопрос StackOverflow
- Удалите и переустановите
node_modules
- Клонирование нового экземпляра проекта
- Обновление до самых последних
@angular/*@^6.0.0
и последних @angular-devkit/*
пакетов.