使用@stencil/angular-output-target遇‘Module无导出成员’错误求助
解决NX Monorepo中Stencil组件库接口在Angular包装库中导出失败的TS2305错误
核心问题原因
Stencil默认仅自动导出组件相关类型(如组件类、事件类型等),自定义业务接口不会被自动纳入库的公开导出范围,导致Angular包装库生成的proxies.ts无法正确识别该接口,最终Angular应用构建时抛出导出成员不存在的错误。
具体解决步骤
1. 配置Stencil组件库显式导出接口
在Stencil组件库的stencil.config.ts中,修改dist类型的outputTarget,添加exports字段指定需要公开导出的接口文件路径:
export const config: Config = { outputTargets: [ { type: 'dist', exports: [ 'services/interfaces/index.ts' // 指向你的接口导出文件 ] }, // 保留原有的Angular包装库outputTarget配置 { type: 'angular', componentCorePackage: '@my-nx-workspace/component-lib', directivesProxyFile: './src/lib/proxies.ts', includeImportCustomElements: true } ] };
同时确认services/interfaces/index.ts中接口为显式导出:
export interface RequestedItem { // 你的接口字段定义 }
2. 让Angular包装库同步导出接口
打开Angular包装库的public-api.ts文件,手动添加接口的导出声明,确保包装库能对外暴露该类型:
// 从组件库导入并重新导出 export { RequestedItem } from '@my-nx-workspace/component-lib/services/interfaces'; // 保留原有的组件指令导出 export * from './lib/proxies';
3. 清理NX缓存并重新构建
NX的增量缓存可能残留旧的导出信息,执行以下命令彻底清理并重新构建整个依赖链:
nx reset nx build component-lib nx build angular-wrapper-lib nx build angular-app
4. 修正Angular应用的导入路径
确保Angular应用中导入RequestedItem时使用正确路径:
- 直接从组件库导入:
import { RequestedItem } from '@my-nx-workspace/component-lib'; - 从Angular包装库导入(已在包装库
public-api.ts导出):import { RequestedItem } from '@my-nx-workspace/angular-wrapper-lib';
内容的提问来源于stack exchange,提问作者Error Check
相关产品推荐
相关产品推荐

