使用AntD实现按需引入,更改项目主题色,出现TypeError: this.getOptions is not a function

1,257 阅读1分钟
1.安装依赖
yarn add react-app-rewired customize-cra babel-plugin-import less less-loader

react-app-rewired:重写脚手架配置
customize-cra:修改webpack配置
babel-plugin-import:将 import 的写法自动转换为按需引入的方式
less:使用less
less-loader:将less文件转化为css

create-creact-app项目,如果需要手动修改配置,需先npm run eject弹出配置,这个过程是不可逆的

2.修改package.json
 "scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
}
3.根目录下创建config-overrides.js
具体的配置规则:
    const { override, fixBabelImports,addLessLoader} = require('customize-cra'); 
    module.exports = override(
  	  fixBabelImports('import', {
	  libraryName: 'antd',
	  libraryDirectory: 'es',
      style:true
    }),
 
 addLessLoader({
   lessOptions:{
       javascriptEnabled: true,
       modifyVars: { '@primary-color': '#830005' },  //要修改的颜色可以使用英文或者16进制
   }
   }),
   );

注意:不用在组件里亲自引入样式,import ‘antd/dist/antd.css’ 应该删掉

4.安装之后运行报错:TypeError: this.getOptions is not a function

这里可能less-loader版本过高
方法	:1.npm uninstall less-loader
	  2.npm install less-loader@6.0.0