В настоящее время я пытаюсь обновить свой проект Angular 2.something до последней версии. У меня был собственный файл angular.config, поэтому я мог создать два приложения, использующих одну и ту же библиотеку компонентов. Но затем прибыл грандиозный выпуск Angular 6 с настоящими библиотеками Angular! Но теперь я застрял (снова), пытаясь реорганизовать свой проект до этой новой версии.

Я дошел до создания библиотеки компонентов (названной «core») в папке DIST. Даже Typescript подходит для этой библиотеки. Но когда я пытаюсь создать свое веб-приложение, Angular CLI начинает жаловаться, что не может найти «ядро» модуля.

Следующий фрагмент кода - это public_api.d.ts в папке 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

Я добавил путь к этой библиотеке в свой tsconfig.json

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

Затем пришло время импортировать модули и компоненты из «ядра» библиотеки в приложение под названием «cms».

import { WdCoreModule } from 'core';

Ошибок пока нет! Теперь я готов построить свой проект с помощью: ng serve cms Это вызовет следующую ошибку:

Projects / cms / src / app / app.module.ts (52,30): ошибка TS2307: не удается найти модуль «core».

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

Изменить: дополнительная информация о решении

Я выполнил следующий пост, чтобы упаковать и установить свою библиотеку сборки

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

Следующие 2 команды помогли мне:

//package.json
"npm_pack": "cd dist/core && npm pack",
//then
npm install dist/core/core-0.0.1.tgz --save
5
Linksonder 22 Окт 2018 в 22:35

2 ответа

Лучший ответ

Вы должны связать вашу сборочную библиотеку (.tgz) в вашем package.json. Путь ts.config предназначен только для разработки.

5
MikeOne 22 Окт 2018 в 21:15

У меня была такая же проблема, и я нашел решение, которое не требовало от меня упаковки библиотеки во время разработки.

Я решил добавить пути также к файлу tsconfig.app.json, присутствующему в каталоге приложения.

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

(больше контекста здесь http : //codecleane.rs/2019/07/09/fixing-error-ts2397-cannot-find-module-angular-custom-library/ )

2
Maurizio Pozzobon 9 Июл 2019 в 12:07
52936599