一个关于 CSS Modules 的陷阱

ops/2024/11/29 5:19:11/

我在引用 less 文件样式的时候,发现

index.less

css">.drag_upload {width: 100%;height: 90vh;padding: 20px;
}

index.jsx

import React, { useState, useEffect } from 'react';
import styles from './index.less';export default ({
}) => {return (<div className={styles.drag_upload}>test</div>);
};

经查发现我没有开启模块化,所以使用 styles 变量引入样式没有用:

使用这种全局普通样式就有用

import React, { useState, useEffect } from 'react';
import styles from './index.less';export default ({
}) => {return (<div className="drag_upload">test</div>);
};

但是我全局普通样式容易影响其他组件的样式,所以我需要开启模块化功能,只让当前的 index.less 在引入的文件生效,不影响其他组件样式。

参考 webpack 官网配置开启 CSS Modules 模块化功能:

在这里插入图片描述
这样我以为没问题了,结果发现我要写的那块样式确实生效了,styles 变量起作用了,但是我的项目主页的图片显示不出来了。

经查发现是 CSS Modules 与 Less 配合存在问题,如 webpack 官网 提到的 CSS modules 陷阱
在这里插入图片描述
github 参考:
https://github.com/webpack-contrib/less-loader/issues/109
https://github.com/webpack-contrib/less-loader/pull/121
https://github.com/wall-wxk/blog/issues/8

主要是这样解决:

在这里插入图片描述

npm 网站参考:
https://www.npmjs.com/package/resolve-url-loader
在这里插入图片描述

我的项目中是这样配置的:

在这里插入图片描述
在这里插入图片描述

注意:
include 很重要,最好写上要生效的路径。
就像我下面这段 antd 的样式就不能开启 CSS Modules , 就算配置了 resolve-url-loader ,样式也会乱掉 或者 和前面一样出问题
在这里插入图片描述

**注意:**开启 sourceMap 很重要,不配置 sourceMap 会报如下错误:

Module build failed (from ./node_modules/resolve-url-loader/index.js):
Error: resolve-url-loader: error processing CSSa valid source-map is not present (ensure preceding loaders output a source-map)

以及如果 index.less 文件没有写东西,是个空文件夹,也会报如下错误:

resolve-url-loader: webpack misconfiguration
webpack or the upstream loader did not supply a source-map

所以不能写空的 less 文件

到这里问题就完全解决了。


http://www.ppmy.cn/ops/137571.html

相关文章

C++ —— 以真我之名 如飞花般绚丽 - 智能指针

目录 1. RAII和智能指针的设计思路 2. C标准库智能指针的使用 2.1 auto_ptr 2.2 unique_ptr 2.3 简单模拟实现auto_ptr和unique_ptr的核心功能 2.4 shared_ptr 2.4.1 make_shared 2.5 weak_ptr 2.6 shared_ptr的缺陷&#xff1a;循环引用问题 3. shared_ptr 和 unique_…

太通透了,Android 流程分析 蓝牙enable流程(应用层/Framework/Service层)

零. 前言 由于Bluedroid的介绍文档有限&#xff0c;以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等)&#xff0c;加上需要掌握的语言包括Java/C/C等&#xff0c;加上网络上其实没有一个完整的介绍Bluedroid系列的文档&#xff0…

深入理解 HTTP 请求头与请求体

在Web开发中&#xff0c;每一次HTTP请求都由请求行、请求头和请求体组成。虽然看似简单&#xff0c;但它们在数据传输和接口设计中扮演着至关重要的角色。本文将通过简要分析&#xff0c;帮助你深入理解请求头与请求体的关系和应用。 请求头&#xff1a;请求的元信息 请求头是…

cangjie (仓颉) vscode环境搭建

sdk下载 下载中心-仓颉编程语言官网 可选择半年更新版&#xff0c;不用申请。目前版本&#xff1a;0.53.13 &#xff0c;选择不同平台压缩包下载解压到任意位置即可 补充下载&#xff0c;vscode插件解压后&#xff0c;在vscode扩展中选择从vsix安装&#xff0c;安装后新增名为…

神经网络的数学——一个完整的例子

神经网络是一种人工智能方法&#xff0c;它教导计算机以类似于人脑的方式处理数据。神经网络通过输入多个数据实例、预测输出、找出实际答案与机器答案之间的误差&#xff0c;然后微调权重以减少此误差来进行学习。 虽然神经网络看起来非常复杂&#xff0c;但它实际上是线性代数…

【Elasticsearch入门到落地】2、正向索引和倒排索引

接上篇《1、初识Elasticsearch》 上一篇我们学习了什么是Elasticsearch&#xff0c;以及Elastic stack(ELK)技术栈介绍。本篇我们来什么是正向索引和倒排索引&#xff0c;这是了解Elasticsearch底层架构的核心。 上一篇我们学习到&#xff0c;Elasticsearch的底层是由Lucene实…

Linux——环境变量

前言&#xff1a;大佬写博客给别人看&#xff0c;菜鸟写博客给自己看&#xff0c;我是菜鸟。 感言&#xff1a;每天的认知都在被刷新。 1&#xff1a;基本概念 环境变量(environment variables)&#xff1a;⼀般是指在操作系统中⽤来指定操作系统运⾏环境的⼀些参数 2&#xf…

如何通过ChatGPT提高自己的编程水平

在编程学习的过程中&#xff0c;开发者往往会遇到各种各样的技术难题和学习瓶颈。传统的学习方法依赖书籍、教程、视频等&#xff0c;但随着技术的不断发展&#xff0c;AI助手的崛起为编程学习带来了全新的机遇。ChatGPT&#xff0c;作为一种强大的自然语言处理工具&#xff0c…