'rootDir' is expected to contain all source files

后端 未结 3 887
野的像风
野的像风 2020-12-11 14:26

I have an Angular CLI workspace containing two library projects, foo and bar. When I build the second of the two libraries, foo, the b

3条回答
  •  难免孤独
    2020-12-11 15:25

    This looks like the problem that is occurring due to the import types which was introduced in TypeScript 2.9. When emitted these are not being rewired properly see line 3.

    dist/bar/lib/bar.component.d.ts(5,11):

    export declare class BarComponent implements OnInit {
        private barService;
        list: import("projects/bar/src/lib/types").Item[]; 
        constructor(barService: BarService);
        ngOnInit(): void;
    }
    

    In the above emitted dts, list: import("projects/bar/src/lib/types").Item[]; should be something like import("./types").Item[]; instead.

    A workaround for this can be that from your code instead infering the type, you explicitly set it.

    in bar.component.ts change the below;

    list = this.barService.list();
    

    to:

    list: Item[] = this.barService.list();
    

    This will remove the type import and the consuming library will build.

    I also checked a bit with future versions of TypeScript, it is still an issue in TypeScript 3.0.1, but it looks like it has been addressed in dev version of TypeScript 3.1.0, ie 3.1.0-dev.20180813

提交回复
热议问题