npm start启动React项目报找不到themify.eot错误,如何定位触发错误的文件?
问题排查与解决方法
定位错误触发文件的方法
- 首先看报错的加载链路:错误是从
src/index.scss的依赖加载链抛出的,先核对index.scss内的内容:你自己声明的Vazir字体路径写的是./assets/fonts/Vazir.ttf,和实际路径匹配,没有问题,所以问题出在它引入的assets/scss/app.scss的依赖中。 - 再看报错提示找不到的资源是
themify.eot,对应app.scss里引入的themify.scss文件,错误就是src/assets/scss/themify.scss触发的:这个文件里声明themify.eot的路径是./fonts/themify.eot,sass-loader解析scss里的相对路径时,会以入口文件index.scss所在的src目录为基准,所以会去不存在的src/fonts/目录下找资源,导致报错。 - 验证方式:直接打开
src/assets/scss/themify.scss,搜索themify.eot即可看到错误的路径配置。
修复方案
- 方案1:修改
themify.scss内的字体路径,改为相对于src目录的正确相对路径:./assets/fonts/themify.eot,其他字体格式(woff、ttf等)的路径同步修改即可。 - 方案2:如果要按
themify.scss所在的src/assets/scss/目录做相对路径匹配,改成../fonts/themify.eot即可,sass-loader会自动按文件相对位置解析。 - 方案3:如果是用create-react-app搭建的项目,也可以用别名路径写法:
~/assets/fonts/themify.eot,脚手架会默认从src目录开始解析路径。
内容的提问来源于stack exchange,提问作者Gandom
相关产品推荐
相关产品推荐

