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

使用create-react-app在Heroku构建失败求助

解决Mars Buildpack构建时找不到Main.css的问题

你的本地OSX环境能正常运行,但用Mars Buildpack构建网站时总是报Module not found: Error: Can't resolve './Main.css'的错误,试过移动文件、调整引用方式都没用?这大概率是构建流程差异或者环境特性导致的,给你几个针对性的排查和解决方向:

1. 让构建脚本先编译CSS

你本地开发时会手动执行build-css或者watch-css来生成.css文件,但Mars Buildpack默认只会运行npm run build,而你当前的build脚本并没有包含CSS编译步骤。

修改package.json里的build命令,让它先执行CSS编译,再进行React项目的构建:

"scripts": {
  "build-css": "node-sass-chokidar --include-path ./src --include-path ./node_modules src/ -o src/",
  "watch-css": "npm run build-css && node-sass-chokidar --include-path ./src --include-path ./node_modules src/ -o src/ --watch --recursive",
  "start": "react-scripts start",
  "build": "npm run build-css && react-scripts build",
  "test": "react-scripts test --env=jsdom",
  "eject": "react-scripts eject"
}

这样Buildpack在执行构建时,会先生成Main.css文件,再进行React的打包流程,就不会出现找不到文件的问题了。

2. 检查文件名大小写

本地OSX的文件系统是大小写不敏感的,但Buildpack运行的Linux环境对文件名大小写严格区分。仔细确认:

  • 你的实际文件是Main.css还是main.css?
  • 代码里的import './Main.css'是否和实际文件名完全一致?

如果大小写不匹配,修改其中一方统一即可。

3. 检查.gitignore规则

如果你的.gitignore里有类似src/*.css的规则,那本地生成的Main.css不会被提交到Git仓库。当Buildpack拉取代码时,服务器上就没有这个文件,自然会报错。

解决方式二选一:

  • 要么移除.gitignore里对src/*.css的忽略,把编译后的CSS文件提交到仓库(不推荐,因为属于编译产物);
  • 要么确保构建流程会自动生成CSS文件(也就是第1点的修改,更推荐)。

4. 确认依赖是否正确安装

检查package.json的devDependencies里是否包含node-sass-chokidar,如果没有,执行npm install node-sass-chokidar --save-dev,然后提交package.json和package-lock.json的修改,这样Buildpack在构建时会自动安装这个依赖,确保能正常编译CSS。

优先试试第1点的修改,这是这类问题最常见的原因,应该能快速解决你的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:03:02