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

升级Angular 13后Sass文件出现@import规则不允许的错误求助

解决Angular 13升级后Sass的@import报错问题

错误原因

升级到Angular 13后,项目默认使用的Dart Sass版本不再允许在选择器内部或**@if这类控制指令块内**使用@import规则。@import属于顶层规则,必须放在文件最外层,不能嵌套在任何选择器或条件判断结构中。

解决方案

方案1:将导入内容封装为混合宏(推荐)

  1. 修改../_appwork/include.scss文件,把所有样式内容包裹在混合宏里:
// _appwork/include.scss
@mixin appwork-styles {
  // 保留原文件的所有样式代码
}
  1. 在你的主Sass文件中,通过调用混合宏实现条件嵌套:
@if $enable-light-style {
  .light-style {
    // 定义当前作用域内的变量
    $ui-star-empty-color: $gray-200;
    $ui-icon-border-color: $gray-100;
    // 调用混合宏引入样式
    @include appwork-styles;
  }
}

方案2:将@import移到顶层,结合全局变量覆盖

如果无法修改include.scss,可以把@import移到文件顶层,再通过全局变量覆盖实现需求:

// 先在文件顶层导入样式
@import "../_appwork/include";

@if $enable-light-style {
  .light-style {
    // 用!global标记变量为全局,覆盖导入文件中的对应变量
    $ui-star-empty-color: $gray-200 !global;
    $ui-icon-border-color: $gray-100 !global;
  }
}

注意:!global会改变变量的全局作用域,可能影响其他区域的样式,需谨慎使用。

内容的提问来源于stack exchange,提问作者az rnd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:10:37