Angular多项目工作区构建库时出现跨项目错误,原因何在?
Angular工作区构建库时出现跨项目错误的常见原因
- 依赖引用乱了套:要是你的库和其他项目之间有循环依赖,或者某个应用项目直接引用了没构建的库,甚至反过来库引用了应用里的代码,构建库时Angular CLI会扫整个工作区的依赖链,把相关项目的代码也拉进来检查,这些项目只要有语法、类型错误,都会一起爆出来。
- tsconfig配置踩坑:根目录的
tsconfig.json或者库自己的tsconfig.lib.json配置不对,比如include范围设太宽,把其他项目的源码目录也包含进去了,或者compilerOptions里的paths配错了,导致CLI解析依赖时误加载其他项目的文件,触发那些项目的错误。 - CLI和工作区版本不匹配:全局Angular CLI版本和工作区里的Angular核心包版本不一致,不管是过高还是过低,构建时都会出现兼容性问题,甚至会错误解析工作区的项目结构,把无关项目的代码扯进来凑热闹。
- 缓存没清干净:之前构建其他项目留下的缓存(比如
node_modules/.cache或者dist里的旧文件)可能和当前库的构建冲突,CLI会错误加载这些缓存数据,引发各种莫名其妙的错误。 - angular.json配置出错:工作区的
angular.json里,各个项目的配置项有问题,比如某个应用的architect配置不小心关联到了库,或者库的build配置里意外包含了其他项目的文件路径,构建时就会触发这些项目的错误检查。 - 第三方依赖搞事情:如果其他项目装的第三方依赖有问题(比如缺类型定义、版本冲突),而工作区是共享根目录
node_modules的,构建库时CLI会检查整个工作区的依赖完整性,这些第三方依赖的问题也会被抛出来。
内容的提问来源于stack exchange,提问作者Matt Saunders
相关产品推荐
相关产品推荐

