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

使用@use引入Sass混合宏编译报错,改用@import正常的原因

为什么在Jekyll中使用Sass的@use规则调用混合宏会报错,而@import正常?

问题原因

你遇到的问题核心在于Jekyll默认依赖的Ruby Sass不支持@use语法:

  • Ruby Sass是Sass的旧实现,早在2019年就停止维护,它完全不识别@use这个新的模块导入规则,会把@use "common/theme-colors" as theme-colors当成无效CSS语法解析。编译时它根本没把theme-colors识别为模块别名,反而误以为是混合宏名,因此在调用theme-colors.template-text-gradient()时抛出语法错误。
  • 而@import是Sass从诞生就支持的旧导入方式,属于全局作用域导入,Ruby Sass能正常处理,所以用@import时调用混合宏不会出错。

解决方案

1. 升级到Dart Sass(推荐)

Dart Sass是当前官方维护的Sass实现,完全支持@use、@forward等新模块特性。要让Jekyll使用Dart Sass,需更新项目依赖:

  • 修改项目根目录的Gemfile,指定新版jekyll-sass-converter:
    gem "jekyll-sass-converter", "~> 3.0"
    
  • 运行bundle update更新依赖,重新编译Jekyll项目后,@use语法即可正常工作。

2. 暂时沿用@import(不推荐长期使用)

如果暂时无法升级,可以继续用@import方式导入文件,但要注意@import存在全局变量污染、重复编译、无法控制成员可见性等问题,长期来看建议切换到Dart Sass的模块系统。

版本验证

可通过命令确认当前Jekyll使用的Sass实现:

bundle exec sass --version

若输出以Ruby Sass开头,说明确实是旧实现;若以Dart Sass开头,则需检查项目配置是否存在其他冲突,但大概率是版本适配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:12:41