Angular 10 : Unable to write a reference

标签 angular typescript angular-ivy

我尝试按照 angular 更新指南从 angular 8 升级到 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 serve 也可以使用,但 apk 看起来没有使用共享中的任何内容。
ng build fsm-frontend --prod 也通过..
顺便说一句,我通过 npm 链接将共享( map 和前端)和 fsm(前端和元数据)链接到核心,并通过 npm 链接共享到 fsm
编辑:桶文件中的导出顺序重要吗?

最佳答案

我正在同一个项目中构建一个库和一个应用程序。当接口(interface)定义被自动导入时,我的问题就出现了。引用的路径是公共(public) api 文件而不是库。
自动导入创建:
从“projects/mylib/src/public-api”导入 { AbcInterface }
需要是
从“@mylib”导入 { AbcInterface }

关于 Angular 10 : Unable to write a reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64593775/

相关文章:

typescript - 在 Visual Studio 中使用 TypeScript 定位 ES5

angular - 在服务中使用 Push() 或 setRoot() 时出现空白页,Ionic 3

angular - 错误 NG6002 : Appears in the NgModule. 导入 <module>,但无法解析为 NgModule 类

angular - 以 Angular 显示事件选项卡

javascript - Paginate Pipe 如何在 Angular 2 应用程序中成功访问数组的长度?

javascript - 如何通过多个输入将新对象提交到数组

angular - 无法使用Ivy将@Input装饰器与查询装饰器组合

javascript - 使用 MeteorJS Collection 和 Angular 2 显示数据

node.js - 第一次点击后,google-oauth 屏幕不再显示?

angular - 告诉 Scully 忽略路由的静态页面生成?