解决 webpack 配置 sass-loader后报错,无法正常build

1. 问题描述

  1. 总是打包build报错,本质上css样式语法也没写错
  2. 在使用 sass-resources-loader 的项目中,开发者常常遇到构建错误或意外的样式行为,这是因为
    sass-resources-loader 的作用和使用场景并不总是被正确理解。sass-resources-loader
    主要用于全局注入 Sass 变量 和 混入,而不适合直接包含实际的 CSS 样式规则。如果 scss
    文件中混入了普通样式定义,可能会导致构建失败或样式重复应用等问题。

常见问题场景:

开发者尝试通过 sass-resources-loader 全局引入的 scss 文件中直接包含 CSS 样式。
variables.scss 和 global.scss 文件中定义了具体的选择器和样式规则,而这些文件应该只包含 Sass
变量、混入和函数等工具类样式。 项目构建时出现错误,如 Expected digit 或 Unexpected token 等。

2. 原因分析

sass-resources-loader 主要用于将 Sass 变量、混入(mixin) 和 函数 等工具类样式注入到每个 scss 文件的作用域中。其作用相当于在每个 scss 文件中隐式地 @import 一次这些工具文件。这意味着 sass-resources-loader 不会将实际的样式插入到每个 scss 文件中,而是仅仅将变量和混入等工具类代码注入。

因此,sass-resources-loader 的适用范围仅限于工具类样式。如果你在全局引入的 scss 文件中包含普通的 CSS 样式(如选择器和样式定义),这些样式会被反复注入到每个 scss 文件中,导致不必要的重复和冲突。

// variables.scss
$primary-color: #333;
$font-size: 16px;// 错误:普通的 CSS 选择器和样式不应放在这里
body {font-family: Arial, sans-serif;color: $primary-color;
}

3. 解决方案

为了解决这个问题,需要遵循以下原则:

  1. 确保全局注入的 SCSS 文件只包含工具类样式
    variables.scss 和 global.scss 文件中应仅包含 Sass 变量、混入(mixin) 和 函数,而不要包含实际的 CSS 样式规则。
    示例:正确的工具类 SCSS 文件
// variables.scss
$primary-color: #333;
$font-size-base: 16px;// mixins.scss
@mixin flex-center {display: flex;justify-content: center;align-items: center;
}```javascript
// webpack.config.js
const path = require('path');module.exports = {module: {rules: [{test: /\.scss$/,use: ['style-loader','css-loader','sass-loader',{loader: 'sass-resources-loader',options: {// 仅注入工具类文件,不包括普通样式resources: [path.resolve(__dirname, 'src/styles/variables.scss'),path.resolve(__dirname, 'src/styles/mixins.scss'),],},},],},],},
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/53988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HarmonyOS】鸿蒙头像上传-(编辑个人信息页- 头像上传)+实时数据更新

#效果图 #思路 ##步骤: ###一、利用picker api选择1张图片 实例化选择器参数(使用new PhotoSelectOptions())实例化图片选择器 (使用newPhotoViewPicker() )调用图片选择器的select方法传入选择器参数完成图片选取获得结果 利用picker api选择1张图片 async sele…

[Redis] Redis中的Hash类型和List类型

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

智能体趋势:未来科技的核心驱动力

随着人工智能(AI)技术的不断发展,**智能体(intelligent agents)**逐渐成为当今科技发展的重要趋势。这些智能体不仅仅是软件,它们正在改变我们生活和工作的方式,成为推动科技和社会变革的核心力…

eureka.client.service-url.defaultZone的坑

错误的配置 eureka: client: service-url: default-zone: http://192.168.100.10:8080/eureka正确的配置 eureka: client: service-url: defaultZone: http://192.168.100.10:8080/eureka根据错误日志堆栈打断电调试 出现两个key,也就是defaultZone不支持snake-c…

Go语言现代web开发defer 延迟执行

The defer statement will delay the execution of a function until the surrounding function is completed. Although execution is postponed, funciton arguments will be evaluated immediately. defer语句将延迟函数的执行,直到周围的函数完成。虽然执行被延…

SpringBoot用kafka.listener监听接受Kafka消息

1.创建kafka监听配置并进行注册 import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.common.serialization.StringDeserializer; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation…

【PCB工艺】如何实现PCB板层间的互连

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言①、什么是通孔②、通孔是怎样产生的③、通孔种类④、盘中孔⑤、设计建议 前言 送给大学毕业后找不到奋斗方向的你…

C++函数在库中的地址

本文讲述C如何直接调用动态库dll或者so中的函数。 首先我们准备一个被调用库,这个库里面有两个函数,分别是C98 与 C11 下的,名称是run2和run1。 被调用库 相关介绍请看之前的文章《函数指针与库之间的通信讲解》。 //dll_ex_im.h #ifndef…

OpenSSH9.8p1编译rpm包(建议收藏)

1.升级前的openssh版本 [root@ncayu8847 ~]# ssh -V OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 20172.下载软件包(离线包) openssh 源码下载地址: https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssl源码下载 https:/

JUC学习笔记(二)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 四、共享模型之内存4.1 Java 内存模型4.2 可见性退不出的循环解决方法可见性 vs 原子性模式之 Balking1.定义2.实现 4.3 有序性原理之指令级并行1. 名词2.鱼罐头的故…

关于手机号码数理的计算和推导,获得“平替”尾号

文章背景:我个人比较相信命运,对于手机号码的吉凶或是数理颇为在乎。最近,我沉浸于这方面的研究中,并发现许多手机号码的数理核心竟出奇地一致——关键在于后四位尾号,而前面的数字似乎并不占据主导位置。然而&#xf…

使用 GaLore 预训练LLaMA-7B

项目代码: https://github.com/jiaweizzhao/galorehttps://github.com/jiaweizzhao/galore 参考博客: https://zhuanlan.zhihu.com/p/686686751 创建环境 基础环境配置如下: 操作系统: CentOS 7CPUs: 单个节点具有 1TB 内存的 Intel CP…

【C++】入门基础(下)

Hi!很高兴见到你~ 目录 7、引用 7.3 引用的使用(实例) 7.4 const引用 【第一分点】 【第二分点1】 【第二分点2】 7.5 指针和引用的关系(面试点) 8、inline 9、nullptr Relaxing Time! ———…

Mysql(二) - 约束, 进阶查询

目录 一.约束 1.not null 2.unique 3.default 4.primary key 5. foreign key 6.check 7. 综合使用 二.进阶查询 1.新增(插入查询的结果) 2.聚合查询 a.聚合函数 b.使用 3.分组查询 4.联合查询 a.内连接 b.外连接 c.自连接 d.子查询 5.合并查询 三.总结 一…

基于SpringBoot的招生宣传管理系统【附源码】

基于SpringBoot的招生宣传管理系统(源码L文说明文档) 目录 4 系统设计 4.1 系统概述 4.2系统功能结构设计 4.3数据库设计 4.3.1数据库E-R图设计 4.3.2 数据库表结构设计 5 系统实现 5.1管理员功能介绍 5.1.1管理员登录 …

Ubuntu22.04系统安装opencv步骤简述及问题解决方法

前言 opencv是一个功能强大、开源且跨平台的计算机视觉库,适用于多种编程语言和操作系统,能够帮助开发者构建各种视觉项目。其模块众多,提供了诸多功能,能够进行图像处理、视频处理等等。比如:Highgui模块提供图像用户…

SpringBoot 消息队列RabbitMQ消息的可靠性 配置连接重试 生产者重连

介绍 有的时候由于网络波动,可能会出现客户端连接MQ失败的情况。通过配置我们可以开启连接失败后的重连机制。 注意事项 当网络不稳定的时候,利用重试机制可以有效提高消息发送的成功率。不过SpringAMQP提供的重试机制是阻塞式的重试,也就…

Python 解析 JSON 数据

1、有如下 JSON 数据,存放在 data.json 文件: [{"id":1, "name": "小王", "gender": "male", "score": 96.8}, {"id":2, "name": "小婷", "gender&qu…

茶余饭后(九)

1、不要太羡慕那些年少就精通人情世故、各种场合都不慌张的人,因为他们是用自己的成长空间作为代价。2、与人打交道,姿态别放的太低,你姿态越低,对方就会越拿你不当回事,人与人最好的相处方式,是姿态平等&a…

Python 课程12-Python 自动化应用

前言 Python 自动化应用 可以帮助开发者节省时间和精力,将重复性、手动操作变为自动化脚本。例如,Python 可以用于自动化处理文件、邮件、生成报表,甚至可以控制浏览器执行复杂的网页操作任务。借助 Python 的强大库和工具,可以轻…