Azure DevOps CI/CD中Angular+.NET Core项目ng build --prod报kind未定义错误
解决Angular 8
ng build --prod 中 ng-multiselect-dropdown 的 TypeError: Cannot read property 'kind' of undefined 错误 我之前维护Angular 8项目时碰到过一模一样的问题,根源就在你用的ng-multiselect-dropdown@0.2.5版本太老旧,和Angular 8的build-optimizer编译工具不兼容,才会抛出这个错误。下面给你几个可行的解决办法,按优先级推荐:
方案1:升级ng-multiselect-dropdown到兼容Angular 8的版本
这是最稳妥的长期解决方案,旧版本的库没有适配Angular 8的编译链规则,升级后就能彻底解决冲突。你需要把这个库升级到2.0.0及以上版本(这个版本开始正式支持Angular 8)。
操作步骤:
- 先卸载旧版本:
npm uninstall ng-multiselect-dropdown
- 安装兼容的新版本:
npm install ng-multiselect-dropdown@2.0.0 --save
- 重新执行生产构建命令:
ng build --prod
方案2:临时禁用build-optimizer(应急使用)
如果暂时无法升级库(比如项目依赖的旧API暂时没法调整),可以通过修改angular.json禁用build-optimizer来绕过错误。但要注意,这会导致构建后的包体积变大,不建议长期使用。
操作步骤:
打开项目根目录的angular.json,找到生产环境配置节点(通常是projects.你的项目名.architect.build.configurations.production),修改以下两个配置项:
"configurations": { "production": { "optimization": false, "buildOptimizer": false, // 保留其他原有配置... } }
保存后重新执行ng build --prod即可。
方案3:确认其他依赖的兼容性
从你提供的package.json来看,大部分依赖都是Angular 8兼容的版本,但可以额外做两个验证:
@angular-devkit/build-angular版本~0.800.1和Angular CLI^8.0.1匹配,没问题typescript@3.4.5是Angular 8官方推荐的版本,符合要求
如果升级库后还有报错,可以检查组件中使用ng-multiselect-dropdown的代码,新版本可能有API调整,需要对应修改。
内容的提问来源于stack exchange,提问作者bhagwat kushwaha
相关产品推荐
相关产品推荐

