为何`ng build`构建失败,而`ng build --verbose`却能成功?
解决Angular构建时
HttpErrorInterceptor导出找不到的问题 常规ng build失败但加--verbose成功,大概率是构建缓存、库导出配置或依赖解析顺序导致的异常,以下是具体解决步骤:
清理构建缓存
Angular CLI的缓存可能留存旧解析结果,引发诡异错误。执行以下命令彻底清理后重新构建:ng cache clean rm -rf node_modules .angular/cache dist npm install检查库的导出配置
确认库的public-api.ts正确导出拦截器,路径和类名无拼写错误:export { HttpErrorInterceptor } from './path-to-your-interceptor/http-error.interceptor';同时检查库的
ng-package.json(若用ng-packagr打包),确保entryFile指向的public-api.ts路径准确。修正应用中的导入路径
应用中导入拦截器必须使用库的包名路径,避免相对路径引用库文件:import { HttpErrorInterceptor } from '@your-org/your-lib';重新构建本地依赖库
如果库是通过npm link本地链接的,先在库目录下重新构建产物:ng build your-lib --prod再回到应用目录执行
ng build,确保应用使用最新的库构建结果。调整构建优化配置
常规构建默认开启的优化(如树摇)可能误删导出内容,可先在angular.json中临时关闭优化测试:"architect": { "build": { "options": { "optimization": false, "buildOptimizer": false } } }若关闭后构建成功,说明是树摇逻辑导致的问题,可在库的
package.json中添加sideEffects配置,标记拦截器文件有副作用避免被移除:"sideEffects": [ "./path-to-interceptor/http-error.interceptor.ts" ]
内容的提问来源于stack exchange,提问作者ben-ledi
相关产品推荐
相关产品推荐

