Я пробовал обновиться с angular 8 до 10, следуя руководству по обновлению angular.
Мой проект состоит из основного приложения, общего (2 библиотеки, карта Google и общие компоненты) и одного дополнительного apk fsm (2 библиотеки, приложение и его метаданные).
Сборка ядра и общего доступа проходит, но сборка fsm выдает ошибку ОШИБКА: невозможно написать ссылку на ChipComponent в C: /Users/PATH/fsm-frontend/node_modules/shared-frontend/src/components/chip/chip.component. ts из C: ошибка /Users/PATH/fsm-frontend/node_modules/shared-frontend/src/components/chip/chip.module.ts.
Нет проблем с самим ChipComponent, но, возможно, с некоторым импортом или tsconfig.
Общий tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"downlevelIteration": true,
"importHelpers": true,
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2020",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es2015",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
],
"paths": {
"shared-frontend": [
"dist/shared-frontend"
],
"shared-frontend/*": [
"dist/shared-frontend/*"
],
"map": [
"dist/map"
],
"map/*": [
"dist/map/*"
]
}
}
}
FSM tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"importHelpers": true,
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2020",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es2015",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
],
"paths": {
"fsm-frontend": [
"dist/fsm-frontend"
],
"fsm-frontend/*": [
"dist/fsm-frontend/*"
],
"@angular/*": [
"./node_modules/@angular/*"
],
"rxjs": [
"./node_modules/rxjs"
],
"zone.js": [
"./node_modules/zone.js"
],
"@ngx-translate/*": [
"./node_modules/@ngx-translate/*"
],
"shared-frontend": [
"./node_modules/shared-frontend"
],
"primeng": [
"./node_modules/primeng"
],
"tslib": [
"./node_modules/tslib"
],
"fsm-metadata": [
"dist/fsm-metadata"
],
"fsm-metadata/*": [
"dist/fsm-metadata/*"
]
}
}
}
ng-package.json
{
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../dist/shared-frontend",
"lib": {
"entryFile": "src/public_api.ts"
}
}
общая структура:
projects - map
- shared-frontend
-src
- ...
-components
-...
-chip
-chip.component.ts
-chip.module.ts
-index.ts
-lib
-shared-frontend.module.ts
...
pubic_api.ts
shared-frontend.module.ts:
... // exports including:
export * from '../components/index';
@NgModule({
imports: [CommonModule],
exports: [
CommonModule,
...
ChipModule,
...
]
})
export class SharedModule {
static forRoot(): ModuleWithProviders<SharedModule> {
return {
ngModule: SharedModule,
providers: [
SERVICES.....
]
};
}
}
index.ts из чипа:
...
export * from './chip/chip.module';
export * from './chip/chip.component';
...
pubic_api.ts
export * from './lib/hive-shared-frontend.module';
ng serve также работает, но похоже, что apk не использует ничего из общего доступа. ng build fsm-frontend --prod также проходит ..
Кстати, я связываю как общий (карта и интерфейс), так и fsm (интерфейс и метаданные) с ядром через ссылку npm и делюсь с fsm через ссылку npm
РЕДАКТИРОВАТЬ: имеет ли значение порядок экспорта в файлах ствола?