react+customize-cra使用less+less-loader时,可能遇到的问题及解决办法

news2024/11/25 18:47:34

目录

1、先附上各依赖版本和config-overrides.js配置代码,按这个版本和配置就没问题

2、问题(注意:问题顺序没有先后之分哦)

2.1、TypeError: Cannot read property 'tap' of undefined

2.2、No module factory available for dependency type: CssDependency

2.3、ValidationError: CSS Loader Invalid Options

2.3.1、方法一:安装 customize-cra-less-loader 自定义 cssLoaderOptions,很简单,但没有解决我的问题,此处贴出来可以先尝试

2.3.2、方法二:弃用addLessLoader和adjustStyleLoaders,改用 addWebpackModuleRule

2.4、import styles from "index.module.less",styles是undefined,提示Cannot read properties of undefined (reading 'container')

2.5、postcss-pxtorem不生效


1、先附上各依赖版本和config-overrides.js配置代码,按这个版本和配置就没问题

"devDependencies": {
    "css-loader": "^6.5.1",
    "html-webpack-plugin": "^5.0.0",
    "less": "^4.1.2",
    "less-loader": "^11.0.0",
    "postcss": "^8.4.38",
    "postcss-loader": "^8.1.1",
    "postcss-pxtorem": "^6.0.0",
    "style-loader": "^3.3.1",
    "video.js": "^8.6.1",
    "webpack": "^5.0.0"
  }
const {
  override,
  fixBabelImports,
  addWebpackAlias,
  addWebpackModuleRule,
} = require("customize-cra");
const path = require("path");

module.exports = override(
  (config) => ({
    ...config,
  }),
  fixBabelImports("import", {
    libraryName: "antd",
    libraryDirectory: "es",
    style: "css",
  }),
  addWebpackAlias({
    "@": path.resolve(__dirname, "src"),
  }),
  addWebpackModuleRule({
    test: [/\.css$/],
    use: ["style-loader", "css-loader", "postcss-loader"],
  }),
  addWebpackModuleRule({
    test: [/\.less$/],
    use: [
      "style-loader",
      {
        loader: "css-loader",
        options: {
          // url?, import?, modules?, sourceMap?, importLoaders?, esModule?, exportType?
          modules: {
            localIdentName: "[local]--[hash:base64:5]",
          },
        },
      },
      {
        loader: "less-loader",
        options: {
          lessOptions: {
            javascriptEnabled: true,
          },
        },
      },
      "postcss-loader",
    ],
  })
);

2、问题(注意:问题顺序没有先后之分哦)

2.1、TypeError: Cannot read property 'tap' of undefined

这个问题需要webpack和html-webpack-plugin的版本保持一致,此处主动安装为较新版本,问题解决。

"html-webpack-plugin": "^5.0.0" 和 "webpack": "^5.0.0"

2.2、No module factory available for dependency type: CssDependency

这个报错是css-loader版本太低,升级css-loader就可以了

2.3、ValidationError: CSS Loader Invalid Options

2.3.1、方法一:安装 customize-cra-less-loader 自定义 cssLoaderOptions,很简单,但没有解决我的问题,此处贴出来可以先尝试

链接如下GitHub - xyy94813/customize-cra-less-loader: Add less loader to any create-react-app using customize-cra

const { override } = require("customize-cra");
const addLessLoader = require("customize-cra-less-loader");

module.exports = override(
  addLessLoader({
    cssLoaderOptions: {
      sourceMap: true,
      modules: {
        localIdentName: "[hash:base64:8]",
      },
    },
    lessLoaderOptions: {
      lessOptions: {
        strictMath: true,
      },
    },
  })
);
2.3.2、方法二:弃用addLessLoader和adjustStyleLoaders,改用 addWebpackModuleRule
const { override, addWebpackModuleRule } = require("customize-cra");

module.exports = override(
  addWebpackModuleRule({
    test: [/\.css$/],
    use: ["style-loader", "css-loader", "postcss-loader"],
  }),
  addWebpackModuleRule({
    test: [/\.less$/],
    use: [
      "style-loader",
      {
        loader: "css-loader",
        options: {
          // url?, import?, modules?, sourceMap?, importLoaders?, esModule?, exportType?
          modules: {
            localIdentName: "[local]--[hash:base64:5]",
          },
        },
      },
      {
        loader: "less-loader",
        options: {
          lessOptions: {
            javascriptEnabled: true,
          },
        },
      },
      "postcss-loader",
    ],
  })
);

2.4、import styles from "index.module.less",styles是undefined,提示Cannot read properties of undefined (reading 'container')

可能是style-loader/css-loader/less-loader版本不匹配的原因。这边解决办法是将style-loader和css-loader版本改成和react-scripts写的版本一样就好了,此处可以从package-lock.json查具体版本。(注意:如果你的项目没有安装style-loader和css-loader,也可以在package-lock.json找到react-scripts对应的版本,按版本安装就好了)

2.5、postcss-pxtorem不生效

我这边解决的方法是安装postcss和postcss-loader就好了,postcss.config.js配置如图

/*
 * 关于 postcss-pxtorem 的说明:
 *   用来自动将 px 单位值转换为 rem 值,开发中可以直接使用 px 单位。
 */
module.exports = {
  plugins: {
    "postcss-pxtorem": {
      rootValue: 16,
      propList: ["*"],
    },
  },
};

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

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

相关文章

算法金 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost 算法大全

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 决策树是一种简单直观的机器学习算法,它广泛应用于分类和回归问题中。它的核心思想是将复杂的决策过程分解成一系列简单的决…

【windows|011】TCP/IP5层模型常见协议及应用总结大全

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 ​ 🏅阿里云ACE认证高级工程师 ​ 🏅阿里云开发者社区专家博主 💊交流社…

【计算机毕业设计】077停车场微信小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

qmt量化交易策略小白学习笔记第52期【qmt编程之商品期货数据】

qmt编程之获取商品期货数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 主力合约生成规则 每个品种只有一个主连合约。主连合约于下一个交易日进行指向切换,切换前主连合约不变…

2024全新【大模型学习路径导航】从入门到精通的全面规划

引言 随着人工智能技术的迅猛发展,大模型成为了引领技术变革的关键力量。无论你是对大模型领域感兴趣的初学者,还是希望深化理解并应用大模型的开发者,这份精心策划的学习路径将为你提供从零基础到精通的全面指导。 第一阶段:基…

堆排序思想分享

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

鸿蒙NEXT

[中国,东莞,2024年6月24日] 华为开发者大会(HDC)正式开幕,带来全新的 HarmonyOS NEXT、盘古大模型5.0等最创新成果,持续为消费者和开发者带来创新体验。 HarmonyOS NEXT 鸿蒙生态 星河璀璨 鸿蒙生态设备数…

boost asio异步服务器(4)处理粘包

粘包的产生 当客户端发送多个数据包给服务器时,服务器底层的tcp接收缓冲区收到的数据为粘连在一起的。这种情况的产生通常是服务器端处理数据的速率不如客户端的发送速率的情况。比如:客户端1s内连续发送了两个hello world!,服务器过了2s才接…

【scau大数据原理】期末复习——堂测题

一、集群安装知识 启动集群的命令start-all.sh位于 Hadoop安装目录的sbin文件夹 目录下。 bin文件夹下包含常见的Hadoop,yarn命令;sbin命令下包含集群的启动、停止命令。 启动集群的命令start-all.sh包含 同时启动start-dfs.sh和start-yarn.sh 功能。…

大模型ReAct:思考与工具协同完成复杂任务推理

ReAct: Synergizing Reasoning and Acting in Language Models Github:https://github.com/ysymyth/ReAct 一、动机 人类的认知通常具备一定的自我调节(self-regulation)和策略制定(strategization)的能力&#xff0…

ONLYOFFICE8.1版本桌面编辑器——功能测评

一、编辑DOCX 相信大家都有写word文档的经历,不知道大家是不是跟我一样,感觉做一个word不难,但想做好一个word却很麻烦,功能太多,看的人眼花缭乱,有时候一个功能要找很久,甚至有的功能用一辈子都…

mybatis核心配置介绍

mybatis核心配置 【mybatis全局配置介绍】 ​ mybatis-config.xml,是MyBatis的全局配置文件,包含全局配置信息,如数据库连接参数、插件等。整个框架中只需要一个即可。 1、mybatis全局配置文件是mybatis框架的核心配置,整个框架…

Unity | Shader基础知识(第十五集:透明效果)

目录 一、前言 二、素材准备 三、准备基础代码 四、准备基础场景 五、SurfaceOutput结构体 六、透明度 七、渲染顺序 八、选错的后果 九、Tags之渲染顺序 十、Cull(正面和反面渲染) 十一、代码汇总 十二、作者的碎碎念 一、前言 因为shader…

python-斐波那契数列

[题目描述] 斐波那契数列是指这样的数列:数列的第一个和第二个数都为 1,接下来每个数都等于前面 2个数之和。 给出一个正整数 a,要求斐波那契数列中第 a 个数是多少。输入: 第 1 行是测试数据的组数 n,后面跟着 n 行输…

UnityShader SDF有向距离场简单实现

UnityShader SDF有向距离场简单实现 前言项目场景布置连连看画一个圆复制一个圆计算修改shader参数 鸣谢 前言 突然看到B站的一个教程,还不错,记录一下 项目 场景布置 使用ASE连连看,所以先要导入Amplify Shader Editor 连连看 画一个…

有人问周鸿祎: 学历不重要,为什么360只要985和211?

关注、星标公众号,直达精彩内容 有人问周鸿祎:你说学历不重要,为什么360招聘的人才只要985和211?他说这个事情,我专门问了我们的人力资源,我们的干品分为校园招聘和社会招聘 校园招聘的话会看文凭 社会招聘的话&#x…

性能优化:Java垃圾回收机制深度解析 - 让你的应用飞起来!

文章目录 一、什么是垃圾回收二、Java 内存区域划分三、垃圾回收算法1. 标记-清除(Mark-Sweep)算法2. 复制(Copying)算法3. 标记-整理(Mark-Compact)算法4. 分代收集(Generational Collecting&a…

光储充一体化解决方案

慧哥充电桩开源平台V2.5.2_ 【源码下载】 https://liwenhui.blog.csdn.net/article/details/134773779?spm1001.2014.3001.5502 本文从光储充的原理以及总体系统等角度,全方位介绍光储充一体化解决方案实例。 一、典型应用场景 针对整县区域光伏项目,在…

综合评价类模型——突变级数法

含义 首先:对评价目标进行多层次矛盾分解其次:利用突变理论和模糊数学相结合产生突变模糊隶属函数再次:由归一公式进行综合量化运算最终:归一为一个参数,即求出总的隶属函数,从而对评价目标进行排序分析特点…

c++指针和引用之高难度(二)习题讲解

1.【单选题】 int a[4] { 1001,1002,1003,1004 }; int* p{ &a[1] }; p[1] ? A 1001 B 1002 C 1003 解析:这道题考察了指针和数组可以混用。p 指向了 数组 a[0] 的地址,也就是 1002 的地址,此时 *p p[0]…