web-dev-qa-db-fra.com

La bibliothèque Angular6.x n'exposant pas tous les membres de public_api.ts

Après avoir mis à jour mon projet avec la dernière version de Angular (6.0.4), je souhaitais enfin séparer mon code dans différentes bibliothèques. 

La configuration est la suivante:

  1. CMS - application
  2. Client - application 
  3. Core - Bibliothèque avec membres partagés pour les deux applications

J'ai créé 3 projets vides et commencé à déplacer tous mes composants et services dans les bons dossiers. Après avoir finalement terminé toutes ces modifications et supprimé les erreurs TS, ma construction échoue toujours. Il semble que mon application CMS ne trouve aucun des modules, composants ou services définis dans ma bibliothèque. Ma bibliothèque construit correctement et semble contenir tous ces éléments. 

ERROR in ./src/app/app.module.ts
Module not found: Error: Can't resolve '**\Webdictaat.Client\dist\core\core' in '**\Webdictaat.Client\projects\cms\src\app'

Ma bibliothèque contient un fichier public_api.ts qui semble fonctionner correctement MAIS le fichier core.ts généré ne contient pas tous les membres exportés. Par exemple, le wd-core.module qui se trouve sur la deuxième ligne du fichier public_api.d.ts

La vraie question: Qu'est-ce que je fais mal dans ma bibliothèque si tous les membres ne sont pas exportés? 

//dist/core/public_api.d.ts
export * from './lib/avatar/avatar.component';
    export * from './lib/wd-core.module'; 
export * from './lib/modal-component/modal-component.component';
export * from './lib/game-elements/game-elements.module';
export * from './lib/core/html-outlet.directive';
export * from './lib/services';
export * from './lib/models';

//dist/core/core.d.ts
//No wd-core.module :(
/**
 * Generated bundle index. Do not edit.
 */
export * from './public_api';
export { BaseModalService as ɵg } from './lib/core/basemodal.service';
export { GroupByPipe as ɵv } from './lib/core/group-by.pipe';
export { ArraySortPipe as ɵw } from './lib/core/order-by.pipe';
export { ProcessTokenComponent as ɵx } from './lib/core/process-token.component';
export { DirtyGuard as ɵk } from './lib/core/security/dirty.guard';
export { wdApi as ɵb } from './lib/core/wd.service';
export { WdFilterPipe as ɵu } from './lib/core/wdfilter.pipe';
export { DialogComponent as ɵs } from './lib/dialog/dialog.component';
export { ModalComponentComponent as ɵy } from './lib/modal-component/modal-component.component';
export { NavMenuService as ɵm } from './lib/nav-menu/nav-menu.service';
export { AccountService as ɵa } from './lib/services/account.service';
export { AchievementService as ɵi } from './lib/services/achievement.service';
export { AssignmentService as ɵn } from './lib/services/assignment.service';
export { ConfigService as ɵd } from './lib/services/config.service';
export { DialogService as ɵe } from './lib/services/dialog.service';
export { DictaatService as ɵc } from './lib/services/dictaat.service';
export { GoogleAnalyticsEventsService as ɵq } from './lib/services/google-analytics.service';
export { ImageService as ɵh } from './lib/services/images.service';
export { ParticipantService as ɵo } from './lib/services/participantService';
export { PollService as ɵr } from './lib/services/poll.service';
export { QuizService as ɵf } from './lib/services/quiz.service';
export { RatingService as ɵj } from './lib/services/rating.service';
export { StylingService as ɵp } from './lib/services/styling.service';
export { VideoService as ɵl } from './lib/services/video.service';
export { SpinnerComponent as ɵt } from './lib/spinner/spinner.component';

Projet complet Github:

https://github.com/Webdictaat/Webdictaat.Client/tree/update6

Projet de bibliothèque

https://github.com/Webdictaat/Webdictaat.Client/tree/update6/projects/core

Projet d'application CMS

https://github.com/Webdictaat/Webdictaat.Client/tree/update6/projects/cms

6
Linksonder

Ce que vous devez faire est de placer dans le fichier public_api.ts tout ce qui doit être disponible en dehors de la bibliothèque, comme le suggère déjà la première réponse. C’est l’intention de ce fichier et doit être fait pour que vous puissiez utiliser la bibliothèque correctement. De plus, le problème avec les fichiers index.ts est réel, donc si vous avez toujours des problèmes après les modifications, exportez tout dans le public_api.ts. Ensuite, vous importez les fichiers 'core' et non 'core/core' ou même un chemin plus long comme vous le faites dans votre code maintenant. Par exemple, dans votre dictaat.module.ts, cela devrait ressembler à ceci:

import { WdCoreModule, DictaatService } from 'core';

Si cela ne fonctionne pas comme cela, cela signifie que les exportations sont manquantes dans le fichier public_api.ts.

3
AlesD