uni-app 运行时报错 关于sass 版本的报错
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 |
这个警告信息 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
文件中 dependencies
或 devDependencies
部分,查看当前项目中安装的 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 或社区中搜索是否有其他人遇到并解决了相同的问题。