我尝试按照 Angular 更新指南从 Angular 8 升级到 Angular 10。
我的项目由核心应用程序、共享(2 个库、谷歌地图和共享组件)和一个额外的 apk fsm(2 个库、应用程序及其元数据)组成。
核心和共享的构建正在通过,但 fsm 构建失败,并显示“错误:无法在 C:/Users/PATH/fsm-frontend/node_modules/shared-frontend/src/components/chip/chip.component 中写入对 ChipComponent 的引用” .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
共享前端.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 服务也可以工作,但 apk 看起来没有使用共享的任何内容。
ng build fsm-frontend --prod 也通过了..
顺便说一句,我通过 npm 链接将共享(地图和前端)和 fsm(前端和元数据)链接到核心,并通过 npm 链接共享到 fsm
编辑:桶文件中的导出顺序重要吗?