Angular 8构建环境报错:复合选择器无法被继承
解决方案:Angular 8项目Intel Mac构建报错问题
一、Sass复合选择器@extend错误处理
报错来自kendo-theme-bootstrap的主题文件,提示复合选择器继承语法不再被支持,解决方案如下:
锁定Sass版本
检查package-lock.json中sass的具体版本,确保Intel Mac环境安装的版本与M1 Mac完全一致。可以在package.json中明确指定兼容版本(旧版Dart Sass支持复合选择器@extend语法),然后执行:rm -rf node_modules package-lock.json npm install用patch-package打持久化补丁
直接修改node_modules文件无法长期保留,用patch-package保存修改:- 安装依赖:
npm install patch-package --save-dev - 修改
node_modules/@progress/kendo-theme-bootstrap/modules/@progress/kendo-theme-default/scss/toolbar/_layout.scss第105行,将@extend .k-button::before;替换为@extend .k-button, ::before; - 生成补丁:
npx patch-package @progress/kendo-theme-bootstrap - 后续执行
npm install时,补丁会自动应用
- 安装依赖:
升级Kendo主题版本
查找kendo-theme-bootstrap已修复该Sass语法问题的兼容版本,执行升级:npm install @progress/kendo-theme-bootstrap@<兼容版本号> --save
二、TypeScript类型定义错误处理
这类错误是因为@types/node和pdfjs-dist的类型文件使用了当前Angular 8配套TS版本不支持的语法,处理步骤:
锁定TypeScript版本
Angular 8对应的TS版本为3.4.x,在package.json中明确指定:"typescript": "~3.4.5"重新安装依赖:
rm -rf node_modules package-lock.json npm install匹配@types/node版本
@types/node版本需与你的Node版本对应(比如Node 14对应@types/node@14),避免安装过高版本:npm install @types/node@<对应Node版本> --save-dev降级pdfjs-dist
当前pdfjs-dist的类型文件包含Angular 8的TS版本不支持的字符,降级到兼容版本:npm install pdfjs-dist@<兼容版本号> --save
内容的提问来源于stack exchange,提问作者Chris Kooken
相关产品推荐
相关产品推荐

