z***@foxmail.com
z***@foxmail.com
  • 发布:2025-04-02 16:05
  • 更新:2025-04-17 21:53
  • 阅读:118

【报Bug】vue3 使用 sass @use 语法报错

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 15.3.2 (24D81)

浏览器平台: Chrome

浏览器版本: Version 134.0.6998.166 (Official Build) (arm64)

项目创建方式: CLI

CLI版本号: 3.0.0-alpha-4050720250320001

示例代码:

<style lang="scss" scoped>
@use '../../libs/css/components.scss';
</style>

操作步骤:

<style lang="scss" scoped>
@use '../../libs/css/components.scss';
</style>

预期结果:

运行正常

实际结果:

编译器报错
SassError: @use rules must be written before any other rules.

bug描述:

关联问题:https://ask.dcloud.net.cn/question/206689?item_id=295848&rf=false

环境:
目前 sass 升级到1.86.0; "@dcloudio/uni-app": "3.0.0-alpha-4050720250320001",

问题描述:
目前 sass 升级到1.86.0后,原有使用@import 的语法,会出现
Deprecation Warning [import]: Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

<style lang="scss" scoped>  
@import '../../libs/css/components.scss';  
</style>

根据sass 官方建议使用@use 语法

<style lang="scss" scoped>  
@use '../../libs/css/components.scss';  
</style>

运行后,均会出现
SassError: @use rules must be written before any other rules.

原因分析:
uniapp 优先将 uni.scss 以@import 的方式引用每个 vue 文件的<script>

修改建议:
建议官方,将默认的导入方式由@import改为@use uni.scss as *;

2025-04-02 16:05 负责人:无 分享
已邀请:
z***@foxmail.com

z***@foxmail.com (作者)

@DCloud_UNI_FengXY
附件是demo 工程
请使用 pnpm install ,pnpm-lock.yaml 已在项目中

运行正常和异常也在附件截图

  • DCloud_UNI_FengXY

    是因为你的uni.scss中包含了css代码,uni.scss初衷主要是为了定义scss的变量相关,如果有全局css代码,应该放到App.vue中

    2025-04-18 12:05

  • z***@foxmail.com (作者)

    回复 DCloud_UNI_FengXY: 感谢 问题已解决

    2025-04-21 16:52

DCloud_UNI_FengXY

DCloud_UNI_FengXY

vue3,uni.scss是通过读取文件内容追加到additionalData参数中,并没有使用@import,我这里测试@use语法可以正常使用,如果有问题,可以提供完整的测试项目。

要回复问题请先登录注册