我使用 ng update
将所有的 Angular 库升级到了 Angular 9.0.0
,但是在尝试构建它们时,出现了以下错误:
错误信息:
不支持私有类 SomeComponent。虽然此类通过 SomeModule -> SomeComponent 对消费者可见,但未从顶层库入口导出。
是否有人解决过这个错误?
我使用 ng update
将所有的 Angular 库升级到了 Angular 9.0.0
,但是在尝试构建它们时,出现了以下错误:
错误信息:
不支持私有类 SomeComponent。虽然此类通过 SomeModule -> SomeComponent 对消费者可见,但未从顶层库入口导出。
是否有人解决过这个错误?
如果在NgModule
中导出了任何组件却未包含在您的public_api.ts
中,Angular 9
将会发生错误。
这个错误在Angular 8
中没有出现,但在升级到Angular 9
后开始显示。
如果您在NgModule
中导出了任何服务
、模块
或组件
等,请确保将它们包含在public_api.ts
中,否则angular 9
将会抛出错误。
解决方法:将您的组件添加到public_api.ts
中
export * from './lib/components/some-me/some-me.component';
今天我也遇到了同样的问题。
我的前提条件:
解决方案:
export * from './just/a/relative/path/to/the/directive/{{myDirectiveFile}}';
export * from './lib/components/some-me/some-me.component';
...转化为以下内容:
export { default as SomeComponent } from './lib/components/some-me/some-me.component';
在public_api.ts文件中。
default
关键字来导出我的组件:@Component({
selector: 'lib-form',
templateUrl: './form.component.html',
styleUrls: ['./form.component.scss'],
})
export default class FormComponent implements OnInit {
// ...
}
import FormComponent from './form.component';
而不是import { FormComponent } from './form.component';
。然而,这似乎在public-api.ts
中不能很好地工作。对我来说,解决方案是删除default
关键字并更改所有导入。