Цель : у меня есть основное приложение и библиотека. Мне нужно иметь возможность протестировать эту библиотеку с основным приложением в режиме реального времени. Другими словами, мне нужно иметь возможность собрать свою библиотеку, и основное приложение сразу распознает изменение (не хочу нажимать на npm при каждом изменении).
Ошибка Когда я пытаюсь запустить основное приложение со следующей настройкой, я получаю эту ошибку.
StaticInjectorError (Платформа: ядро) [PrmCompiler ->
ComponentFactoryResolver]:
NullInjectorError: Нет поставщика для ComponentFactoryResolver! ; Зона:; Задача: Promise.then; Значение: ошибка:
StaticInjectorError (AppModule) [PrmCompiler ->
ComponentFactoryResolver]:
Настройка : я использую paths
в tsConfig для ссылки на библиотеку
"compilerOptions": {
"typeRoots": [
"node_modules/@types"
],
"paths": {
"@stud/myLibrary": ["../librarys/dist/MyLibrary"],
}
}
Я собираю библиотеку, используя prod: true
и aot: true
Здесь находится tsconfig.lib.ts в библиотеке.
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/lib",
"target": "es2015",
"module": "es2015",
"rootDir": "src",
"moduleResolution": "node",
"declaration": true,
"sourceMap": true,
"inlineSources": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"types": [],
"lib": [
"dom",
"es2015"
]
},
"angularCompilerOptions": {
"annotateForClosureCompiler": true,
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true,
"flatModuleId": "AUTOGENERATED",
"flatModuleOutFile": "AUTOGENERATED",
"preserveSymlinks": true
},
"exclude": [
"src/test.ts",
"**/*.spec.ts",
"**/*.stubs.ts"
]
}
У меня preserveSymlinks
установлено значение true. (в нескольких местах было сказано сделать это, но это не работает)
Вот файл angular.json для библиотеки.
"myLibrary": {
"root": "projects/myLibrary",
"sourceRoot": "projects/myLibrary/src",
"projectType": "library",
"prefix": "prm",
"architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"tsConfig": "projects/myLibrary/tsconfig.lib.json",
"project": "projects/myLibrary/ng-package.json"
},
"configurations": {
"production": {
"project": "projects/myLibrary/ng-package.prod.json"
}
}
},
....
}
Если я опубликую приложение, оно работает нормально, проблема может возникнуть, только если я пытаюсь получить к нему доступ с помощью paths
.