uni-app 运行时报错 关于sass 版本的报错

发布于 1周前 作者 bupafengyu 来自 Uni-App

uni-app 运行时报错 关于sass 版本的报错

操作步骤:

  • yarn dev:mp-weixin

预期结果:

  • 运行不报错

实际结果:

  • 运行报错(关于sass方面报错)

bug描述:

Deprecation Warning: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use meta.variable-exists instead.  

More info and automated migrator: https://sass-lang.com/d/import  

╷
41 │     @if variable-exists(show-border-surround) {
│         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
╵
node_modules\@climblee\uv-ui\libs\css\variable.scss 41:6                 @import
node_modules\@climblee\uv-ui\components\uv-toolbar\uv-toolbar.vue 82:10  root stylesheet  

Deprecation Warning: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.
Use meta.variable-exists instead.  

More info and automated migrator: https://sass-lang.com/d/import  

╷
48 │     @if variable-exists(show-border-top) {
│         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
╵
node_modules\@climblee\uv-ui\libs\css\variable.scss 48:6                 @import
node_modules\@climblee\uv-ui\components\uv-toolbar\uv-toolbar.vue 82:10  root stylesheet  

Warning: 6 repetitive deprecation warnings omitted.  

Deprecation Warning: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0.  

More info: https://sass-lang.com/d/legacy-js-api  

Deprecation Warning: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0.  

More info: https://sass-lang.com/d/legacy-js-api  

Deprecation Warning: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0.  

More info: https://sass-lang.com/d/legacy-js-api  

DONE  Build complete. Watching for changes...

项目相关信息

项目属性
产品分类 uniapp/小程序/微信
PC开发环境操作系统 Windows
第三方开发者工具版本号 1.06.2409131
基础库版本号 3.60
项目创建方式 CLI
CLI版本号 @vue/cli 5.0.8

2 回复

这个警告信息 Deprecation Warning: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0. Use meta.variable-exists instead. 表示你在使用 Sass 时调用了一个即将被弃用的全局内置函数 variable-exists。在 Dart Sass 3.0.0 版本中,这个函数将被移除,建议使用 meta.variable-exists 代替。
假设你原来的代码如下: @if variable-exists(show-border-surround) { // 相关样式 }
你需要将其修改为: @use ‘sass:meta’; // 导入 meta 模块
@if meta.variable-exists(‘show-border-surround’) { // 相关样式 }


在使用 uni-app 开发过程中,如果遇到关于 Sass 版本相关的运行时错误,通常是因为项目中使用的 Sass 版本与某些依赖或插件不兼容。这里提供一种可能的解决方案,通过手动指定 Sass 的版本并确保所有相关依赖都使用兼容的版本。

步骤一:检查并指定 Sass 版本

首先,你需要检查 package.json 文件中 dependenciesdevDependencies 部分,查看当前项目中安装的 Sass 版本。如果不确定,可以尝试更新到一个稳定且与 uni-app 兼容的版本。例如,我们指定使用 Sass 版本 1.32.8(版本号根据实际情况调整):

"devDependencies": {
    "sass": "^1.32.8",
    "sass-loader": "^12.1.0" // 确保 sass-loader 版本与 sass 兼容
}

步骤二:安装或更新依赖

运行以下命令来安装或更新指定的 Sass 版本:

npm install sass@^1.32.8 sass-loader@^12.1.0 --save-dev

或者,如果你使用的是 yarn:

yarn add sass@^1.32.8 sass-loader@^12.1.0 --dev

步骤三:清理缓存并重建项目

有时候,旧的缓存可能会导致构建失败。运行以下命令清理缓存并重建项目:

# 清理 npm/yarn 缓存
npm cache clean --force # 或者 yarn cache clean

# 删除 node_modules 和 package-lock.json/yarn.lock
rm -rf node_modules package-lock.json # 或者 rm -rf node_modules yarn.lock

# 重新安装依赖
npm install # 或者 yarn install

步骤四:检查 webpack 配置(如适用)

如果你在使用 webpack,并且配置了 sass-loader,确保 sass-loader 的配置正确。例如:

// webpack.config.js
module.exports = {
    // ...
    module: {
        rules: [
            {
                test: /\.scss$/,
                use: [
                    'style-loader',
                    'css-loader',
                    {
                        loader: 'sass-loader',
                        options: {
                            // 可选的 Sass 选项
                            implementation: require('sass'),
                            sassOptions: {
                                // 例如:指定 Sass 的输出风格
                                outputStyle: 'expanded'
                            }
                        }
                    }
                ]
            }
        ]
    }
    // ...
};

通过上述步骤,你应该能够解决 uni-app 中关于 Sass 版本的报错问题。如果问题依旧存在,建议检查具体的错误信息,并在项目的 issue tracker 或社区中搜索是否有其他人遇到并解决了相同的问题。

回到顶部