You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 8构建环境报错:复合选择器无法被继承

解决方案:Angular 8项目Intel Mac构建报错问题

一、Sass复合选择器@extend错误处理

报错来自kendo-theme-bootstrap的主题文件,提示复合选择器继承语法不再被支持,解决方案如下:

  1. 锁定Sass版本
    检查package-lock.json中sass的具体版本,确保Intel Mac环境安装的版本与M1 Mac完全一致。可以在package.json中明确指定兼容版本(旧版Dart Sass支持复合选择器@extend语法),然后执行:

    rm -rf node_modules package-lock.json
    npm install
    
  2. 用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时,补丁会自动应用
  3. 升级Kendo主题版本
    查找kendo-theme-bootstrap已修复该Sass语法问题的兼容版本,执行升级:

    npm install @progress/kendo-theme-bootstrap@<兼容版本号> --save
    

二、TypeScript类型定义错误处理

这类错误是因为@types/node和pdfjs-dist的类型文件使用了当前Angular 8配套TS版本不支持的语法,处理步骤:

  1. 锁定TypeScript版本
    Angular 8对应的TS版本为3.4.x,在package.json中明确指定:

    "typescript": "~3.4.5"
    

    重新安装依赖:

    rm -rf node_modules package-lock.json
    npm install
    
  2. 匹配@types/node版本
    @types/node版本需与你的Node版本对应(比如Node 14对应@types/node@14),避免安装过高版本:

    npm install @types/node@<对应Node版本> --save-dev
    
  3. 降级pdfjs-dist
    当前pdfjs-dist的类型文件包含Angular 8的TS版本不支持的字符,降级到兼容版本:

    npm install pdfjs-dist@<兼容版本号> --save
    

内容的提问来源于stack exchange,提问作者Chris Kooken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 12:11:03