我有一个 Angular CLI 工作区,其中包含两个库项目,foo
并且bar
. 当我构建两个库中的第二个时foo
,构建失败并出现以下错误:
错误 TS6059:文件“/code/projects/bar/src/lib/types.ts”不在“rootDir”“/code/projects/foo/src”下。'rootDir' 应包含所有源文件。
Error: error TS6059: File '/code/projects/bar/src/lib/types.ts' is not under 'rootDir' '/code/projects/foo/src'. 'rootDir' is expected to contain all source files. at Object.<anonymous> (/code/node_modules/ng-packagr/lib/ngc/compile-source-files.js:53:68) at Generator.next (<anonymous>) at /code/node_modules/ng-packagr/lib/ngc/compile-source-files.js:7:71 at new Promise (<anonymous>) at __awaiter (/code/node_modules/ng-packagr/lib/ngc/compile-source-files.js:3:12) at Object.compileSourceFiles (/code/node_modules/ng-packagr/lib/ngc/compile-source-files.js:19:12) at Object.<anonymous> (/code/node_modules/ng-packagr/lib/ng-v5/entry-point/ts/compile-ngc.transform.js:26:32) at Generator.next (<anonymous>) at /code/node_modules/ng-packagr/lib/ng-v5/entry-point/ts/compile-ngc.transform.js:7:71 at new Promise (<anonymous>)
我已经在 GitHub 上的沙盒存储库中重现了该错误。我已经尽可能地简化了代码,同时仍然遇到错误。您可以通过npm run build
在rootDir-expect-all-source-files-error分支上执行来重现错误。错误的原因是什么?这可能是ng-packagr
or ngc
or的错误tsc
吗?或者它只是一个配置问题?
观察
下面是我可以使构建通过的代码更改,但我想知道是什么导致了代码的错误。
bar.component.ts
构建失败
export class BarComponent {
list = this.barService.list();
constructor(private barService: BarService) {}
}
构建通行证
在构造函数中初始化列表属性而不是内联
export class BarComponent {
list;
constructor(private barService: BarService) {
this.list = this.barService.list();
}
}
酒吧服务.ts
构建失败
import { Injectable } from '@angular/core';
import { List, Item } from './types';
@Injectable({
providedIn: 'root'
})
export class BarService {
private _list: List = [];
constructor() { }
add(item: Item): void {
this._list.push(item);
}
list(): List {
return this._list;
}
}
构建通行证
删除数据类型
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class BarService {
private _list: any[] = [];
constructor() { }
add(item: any): void {
this._list.push(item);
}
list(): any {
return this._list;
}
}