此 class 通过 SomeModule -> SomeComponent 对消费者可见,但不会从顶级库入口点导出

This class is visible to consumers via SomeModule -> SomeComponent, but is not exported from the top-level library entrypoint

我使用 ng update 将所有 angular 库升级到 angular 9.0.0,当我尝试构建它们时出现以下错误。

错误:

Unsupported private class SomeComponent. This class is visible to consumers via SomeModule -> SomeComponent, but is not exported from the top-level library entrypoint.

有人解决了这个错误吗?

如果任何组件在 NgModule 中导出但未包含在您的 public_api.ts 中,则会发生此错误,Angular 9 现在将引发错误。

这个错误不是在 Angular 8 中出现的,但是在升级到 Angular 9 之后它开始显示。

如果您在 NgModule 中导出任何 servicemodulecomponent 等,请确保将它们包含在 public_api.ts 中,否则 angular 9 现在会抛出错误。

修复:将您的组件添加到 public_api.ts

export * from './lib/components/some-me/some-me.component';

我今天遇到了同样的问题。

我的先决条件:

  • 我从事 Angular 11 库类型的项目;
  • 我添加了一个新指令;
  • 我在尝试将我的指令添加到模块导出时遇到了上述错误。

修复:

  • 我已将文件导出添加到 index.ts 文件:

export * from './just/a/relative/path/to/the/directive/{{myDirectiveFile}}';

这个错误发生在我身上,因为我使用了 default 关键字来导出我的组件:

@Component({
  selector: 'lib-form',
  templateUrl: './form.component.html',
  styleUrls: ['./form.component.scss'],
})
export default class FormComponent implements OnInit {
    // ...
}

我的 Linter 建议使用此关键字,并允许将导入写为 import FormComponent from './form.component'; 而不是 import { FormComponent } from './form.component';

然而,这似乎并不适用于 public-api.ts。我的解决方案是删除 default 关键字并更改所有导入。