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

Angular 15升级后ng build报错:SassError: $color: null is not a color

Angular 15升级后Material进度条主题Sass报错:$color为null导致color.adjust执行失败

以下是具体排查和解决步骤:

  • 检查主题基础变量的完整定义
    确保$app-primary、$app-accent、$app-warn是通过mat.define-palette正确初始化的,不能为null或未定义。示例正确定义:

    // variables.scss
    $app-primary: mat.define-palette(mat.$indigo-palette);
    $app-accent: mat.define-palette(mat.$pink-palette, A200, A100, A400);
    $app-warn: mat.define-palette(mat.$red-palette);
    
    $myapp-theme: mat.define-light-theme($app-primary, $app-accent, $app-warn);
    
  • 确认样式文件的导入顺序
    在styles.scss中必须先导入定义主题的variables.scss,再调用mat.all-component-colors,否则主题变量未初始化就会传入null值:

    // styles.scss
    @import './variables.scss';
    @include mat.all-component-colors($myapp-theme);
    
  • 排查组件级样式的主题冲突
    检查项目中所有使用<mat-progress-bar>的组件,确认组件内部的scss文件没有错误覆盖主题变量,比如避免出现mat-progress-bar { color: null; }这类无效赋值,或者错误的Sass变量引用。

  • 清理缓存并重装依赖
    旧缓存或损坏的依赖可能导致主题渲染异常,执行以下命令重置环境:

    rm -rf node_modules
    rm package-lock.json
    npm install
    ng cache clean
    

    完成后重新运行ng build或ng serve。

  • 对齐Angular与Material版本
    确保@angular/material与@angular/core的版本完全一致(均为15.x.x),版本不匹配会导致主题函数参数处理异常。查看package.json中的依赖版本,若不一致,执行对应版本的安装命令:

    npm install @angular/material@<你的Angular版本号>
    
  • 验证主题初始化流程
    Angular 15中需要先调用mat.core()初始化Material的基础样式变量,再应用组件主题颜色,确保styles.scss的结构如下:

    // styles.scss
    @import '@angular/material/theming';
    @import './variables.scss';
    
    @include mat.core();
    @include mat.all-component-colors($myapp-theme);
    

内容的提问来源于stack exchange,提问作者A-B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:10:27