typescript - Angular 6/7 Att använda ett eget bibliotek ger fel TS2397: Kan inte hitta modul '*'


Jag försöker för närvarande uppgradera mitt Angular 2.något-projekt till den senaste versionen. Jag hade en egen angular.config-fil så att jag kunde bygga två appar som använder samma komponent 'bibliotek'. Men sedan kom den episka utgåvan av Angular 6 med riktiga Angular-bibliotek! Men nu sitter jag fast (igen) och försöker refaktorera mitt projekt till denna nya version.

Jag har kommit så långt att jag har byggt ett komponentbibliotek (som heter 'core') till en DIST-mapp. Även Typescript fungerar bra med detta bibliotek. Men när jag försöker bygga min webbapp börjar Angular CLI klaga på att den inte kan hitta modulen 'core'.

Följande kodavsnitt är public_api.d.ts i mappen dist/core:

export { WdCoreModule } from './lib/wd-core.module';
export { wdApi } from './lib/core/wd.service';
export { ProcessTokenComponent } from './lib/core/process-token.component';
export { GroupByPipe } from './lib/core/group-by.pipe';
export { AvatarComponent } from './lib/avatar/avatar.component';
export { GameElementsModule } from './lib/game-elements/game-elements.module';
export { AchievementsComponent } from './lib/game-elements/achievements/achievements.component';
export { ModalComponentComponent } from './lib/modal-component/modal-component.component';
export { BaseModalService, BaseModalComponent } from './lib/core/basemodal.service';
export { NavMenuComponent } from './lib/nav-menu/nav-menu.component';
.... More exports ahead

Jag lade till sökvägen till det här biblioteket i min tsconfig.json

"paths": {
      "core": [
        "dist/core"
      ],
      "core/*": [
        "dist/core/*"
      ],
}

Då är det dags att importera Moduler och komponenter från biblioteket 'core' till appen som kallas 'cms'.

import { WdCoreModule } from 'core';

Inga fel än! Nu är jag redo att bygga mitt projekt med: ng serve cms Detta kommer att ge följande fel:

projects/cms/src/app/app.module.ts(52,30): fel TS2307: Kan inte hitta modul 'core'.

Jag har letat överallt efter en lösning på det här problemet men jag är lite fast. Någon kodningshjälte som kan hjälpa mig?

Redigera: Extra information för lösning

Jag följde följande inlägg för att paketera och installera mitt byggbibliotek

https://blog.angularindepth.com/creating-a-library-in-angular-6-part-2-6e2bc1e14121

De följande 2 kommandona gjorde susen för mig:

//package.json
"npm_pack": "cd dist/core && npm pack",
//then
npm install dist/core/core-0.0.1.tgz --save

Svar #1

Du bör länka ditt byggda bibliotek (t .tgz) i din packages.json. Ts.config-sökvägen är endast för utvecklingstid.

Svar #2

Jag hade samma problem och hittade en lösning som inte krävde att jag paketerade biblioteket under utvecklingen

Jag löste det genom att också lägga till sökvägarna i tsconfig.app.json-filen som finns i appens katalog

{
  "compilerOptions": {
    ...
    "paths": {
      "ika-admin-lib": [
        "../dist/name-lib"
      ],
      "ika-admin-lib/*": [
        "../dist/name-lib/*"
      ]
    }
}

(mer kontext här http://codecleane.rs/2019/07/09/fixing-error-ts2397-cannot-find-module-angular-custom-library/)

Relaterade artiklar