You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行npm start时遭遇React CSS Loader加载异常(Ubuntu+Node 4.2.2)

解决npm start时无法找到Roboto字体文件的问题

Hey,我来帮你搞定这个问题。从报错信息和你的项目结构来看,核心问题是SCSS里的字体引用路径和实际文件位置不匹配,或者Ubuntu的大小写敏感特性在搞鬼。下面是几个具体的排查和解决步骤:

1. 先确认文件名的大小写(Ubuntu重点注意!)

Ubuntu是大小写严格敏感的系统,如果你在SCSS里写的是roboto-light.eot,但实际字体文件是Roboto-Light.eot或者其他大小写组合,系统就会判定文件不存在。

你可以直接在终端里执行命令,查看目标目录下的文件名:

ls webclient/assets/fonts/Roboto/

把输出的文件名和你SCSS里写的对比,确保完全一致,包括大小写。

2. 检查SCSS中的引用路径是否正确

你的index.scss在webclient/src/styles/目录下,报错里的引用路径是../../assets/fonts/Roboto/roboto-light.eot。我们可以用终端命令验证这个路径是否真的指向存在的文件:

ls webclient/src/styles/../../assets/fonts/Roboto/roboto-light.eot

如果命令返回"No such file or directory",说明路径写错了。咱们可以再核对层级:从webclient/src/styles/往上跳两级正好是webclient/目录,而assets就在这个目录下,所以../../assets/...本身是合理的路径——如果还是找不到,要么是文件没放在对应位置,要么需要调整webpack配置。

3. 调整sass-loader的includePaths配置

你的sass-loader目前只把node_modules加入了includePaths,你可以把项目根目录也加进去,这样在SCSS里就能用更简洁的绝对路径引用资源,避免相对路径算错的问题。

找到你的webpack配置文件,修改sass-loader的配置:

sassLoader: {
  outputStyle: 'expanded',
  includePaths: [
    path.resolve(__dirname, 'node_modules'),
    path.resolve(__dirname, './') // 添加项目根目录(webclient目录)
  ]
}

修改后,你在SCSS里就可以直接写assets/fonts/Roboto/roboto-light.eot,不用再纠结相对路径的层级了。

4. 确认字体文件确实存在

如果上面的步骤都没问题,那最后检查一下字体文件是不是真的在webclient/assets/fonts/Roboto/目录下。有时候可能是文件复制遗漏,或者目录名写错了(比如把Roboto写成了roboto)。

内容的提问来源于stack exchange,提问作者Prashant Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:37:57