Angular 7.2升级至8.x后执行ng build报Unknown version 67 of android错误排查
问题原因分析
这个报错本质上是Browserslist工具的版本与配置不兼容导致的,和Angular升级后的依赖变化直接相关:
- Browserslist是前端项目中用来定义目标浏览器范围的工具,Angular构建过程中会借助它(配合autoprefixer等工具)处理CSS前缀、JS语法降级等操作。
- 错误里提到的「Unknown version 67 of android」,核心问题在于:原生Android浏览器的最高版本仅到4.4,而Chrome for Android的版本号是独立的,旧版本的Browserslist无法识别
android 67这种写法——正确的Chrome for Android标识应该是and_chr 67。 - 升级Angular 8后,项目依赖的autoprefixer或@angular-devkit/build-angular可能更新了对Browserslist的依赖要求,如果你的项目Browserslist配置还是旧写法,或者Browserslist版本过旧,就会触发这个解析错误。
排查与解决步骤
按照以下顺序逐步排查,基本能解决问题:
- 检查并修正Browserslist配置
查看项目根目录下的.browserslistrc文件,或者package.json中的browserslist字段,寻找是否有android 67这类配置项。如果有,将其替换为标准的and_chr 67。
示例修改:// 原错误配置 > 1% last 2 versions android 67 // 修改后 > 1% last 2 versions and_chr 67 - 更新Browserslist依赖版本
执行命令更新Browserslist到兼容版本:npm update browserslist # 或者用yarn yarn upgrade browserslist - 清理缓存并重装依赖
清理Angular构建缓存,避免旧配置残留:
然后删除ng cache cleannode_modules、package-lock.json(或yarn.lock),重新安装依赖:rm -rf node_modules package-lock.json npm install - 验证相关依赖兼容性
检查package.json中autoprefixer和@angular-devkit/build-angular的版本,确保它们与Angular 8的版本匹配。如果版本偏差较大,可以手动指定兼容版本后重新安装(比如Angular 8对应的@angular-devkit/build-angular版本建议在0.8xx系列)。
内容的提问来源于stack exchange,提问作者Chris Bao
相关产品推荐
相关产品推荐

