解决在 React + TS项目中使用 scss 报 cannot find module ‘xxx.scss‘ 的问题

使用 create-react-app 的创建的项目,其默认的 webpack.config.js (这个文件默认隐藏,要查看需要运行 npm run eject,运行这个命令前需要本地 commit 代码)的文件中,是默认配置了 sass-loader 的选项的,所以在 react 项目中使用 sass 还是比较方便的。虽然默认配置了 sass-loader,但要使用 sass 还是需要先安装一下的

npm install sass
or
yarn add sass

安装好依赖后,就可以把样式文件改为.scss结尾的了,在基于 TypeScript的项目中,可能会到问题,一般会报这种错误 "cannot find module 'xxx.scss' or xxxx"
要解决这个问题,有几个方法:

  1. 给样式文件重命名为 xxx.module.scss,然后引用样式文件则为:import styles from 'xxx.module.scss',这种方法麻烦的就是每个样式文件都需要添加中间的module,样式文件多的话,写起来比较麻烦
  2. src 文件夹下添加一个样式声明文件,这个文件可以直接放在 src 中,也可以在 src 目录中添加一个文件夹来管理声明文件,声明文件的命名为:xxx.d.ts,声明文件中添加如下内容:
    declare module '*.scss' {
    	const stylePreLoaderD = { readonly[className: string]: string }
    	export default stylePreLoaderD
    }
    
    方法2 的注意事项就是,这个声明文件必须放在 src 目录下

版权声明:本文为qq_24185803原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。