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

Angular 19升级后首次编译SCSS变量未解析的问题求助

Angular 19升级后首次编译SCSS变量未解析的问题求助

各位好,我把项目从Angular 18升级到19后碰到了一个特别奇怪的构建问题:首次执行构建命令时会弹出SCSS变量未定义的错误,但只要我修改任意一个文件触发重新编译,这些错误就自动消失了。看起来像是重新编译时Angular构建系统缓存了变量,所以能正确解析,但首次构建时却找不到这些变量的定义。

具体的错误信息如下:

✘ [ERROR] Undefined variable.
 ╷
8 │ border-bottom: 10px solid $white-2;
  │                           ^^^^^^^^
  src/app/components/icons/loading-icon/loading-icon.component.scss 17:9  root stylesheet
  [plugin angular-sass]

补充下后续测试的发现:如果我修改的是某个用到了SCSS变量的文件,重新构建还是会失败;但如果改的是不涉及SCSS变量的文件,重新编译就能顺利通过。

以下是我的项目配置和代码细节:

组件SCSS文件示例(loading-icon.component.scss)

@use "/styles/main" as *;

.arrow-up {
  width: 0;
  height: 0;
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 10px solid $white-2;
}
// 其他样式代码...

项目文件夹结构

project-root/
├── angular.json
├── styles/
│   ├── abstracts/
│   │   └── _variables.scss
│   ├── layout/
│   │   ├── _backgrounds.scss
│   │   ├── _borders.scss
│   │   ├── _containers.scss
│   │   └── _themes.scss
│   └── main.scss
└── src/
    └── app/

main.scss 内容

@use './abstracts/variables' as *;
@use './layout/backgrounds' as *;
@use './layout/borders' as *;
@use './layout/containers' as *;
@use './layout/themes' as *;

_variables.scss 变量示例

// 其他变量...
$white-1: #ffffff;
$white-2: #f7f7f7;
// 其他变量...

angular.json 相关配置

"architect": {
  "build": {
    "builder": "@angular-devkit/build-angular:application",
    "options": {
      // 其他配置项...
      "stylePreprocessorOptions": {
        "includePaths": [
          "."
        ]
      }
    }
  }
}

请问各位有没有遇到过类似的问题?我该怎么调整配置,才能让Angular在首次编译时就正确处理好这些样式变量,避免出现首次构建失败的情况?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 03:08:49