[Angular踩坑系列] build失败: “Entry point ... has a circular dependency on itself“

在Angular项目打包时遇到了循环依赖导致build失败的问题。

原因和解决方案

在我的项目文件中,同一个shared module下有两个类文件:localize.pipe.ts和auth.service.ts。其中,在AuthService中以下面的错误方式引用了LocalizePipe:

//auth.service.ts
import { LocalizePipe } from 'shared-lib/src/lib/shared';

由于在shared.module.ts里声明并提供了LocalizePipe服务(如下图),使其它模块下的组件可以通过导入shared模块访问LocalizePipe,也就是上图中的导入方式 import { LocalizePipe } from 'shared-lib/src/lib/shared'。因此在打包过程中,如果模块内的auth.service也试图通过该模块来导入pipe,就会造成循环依赖报错!!

//shared.module.ts
@NgModule({ 
    declarations: [ LocalizePipe ],
    exports: [ LocalizePipe ], 
    imports: [], 
    providers: [ LocalizePipe ]
})
[ 解决 ]  同一模块内服务的导入必须是以相对路径的形式:
//auth.service.ts
import { LocalizePipe } from '../pipes/localize.pipe';

文件结构如下:

==== 在使用VS Code自动填充路径的时候一定要注意看清楚,不要像我一样偷懒出错T_T =====

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值