Heroku部署Github旧年鉴项目仅部分图片显示,求排查方案
问题排查与解决方案
嘿,这个问题我之前碰到过好几个类似的,大概率是文件大小写敏感性在搞鬼!结合你描述的“本地正常、Heroku仅少数图片显示”的情况,给你梳理下核心原因和解决步骤:
核心原因:大小写不匹配
Heroku的运行环境是Linux系统,对文件名/路径的大小写是严格区分的;而你的本地环境(比如Windows或默认设置的macOS)是不区分大小写的,所以本地能正常加载图片,但到了Heroku上就会因路径不匹配返回404,只能显示alt文本。
比如你代码里写的是:
<img class="photo" src="Photos/Alexis.PNG" alt="Photo d'Alexis.PNG" />
但如果GitHub仓库里的实际文件是photos/alexis.png(小写的文件夹名+小写文件名+小写后缀),Heroku就会找不到这个文件;而Abdellatif的图片能显示,说明他的文件名Abde.PNG和代码里的路径完全一致(包括大小写)。
另外还有一个容易忽略的点:Git默认对文件名大小写不敏感。如果你本地修改过图片文件名的大小写(比如从alexis.png改成Alexis.PNG),Git可能不会把这个当作文件变更,导致仓库里还是旧的文件名,Heroku拉取后自然找不到。
解决步骤
核对文件名与代码路径
先去你的GitHub仓库,打开Photos文件夹,逐个对比每个图片的文件名(包括后缀、大小写)和代码里src属性的路径是否完全一致。修正本地文件名并同步到Git
- 本地修改所有图片文件名,确保和代码里的
src路径完全匹配; - 开启Git的大小写敏感检测(避免Git忽略文件名大小写变更):
git config core.ignorecase false - 重新添加所有文件并提交:
git add -A git commit -m "Fix image filename case matching" git push origin main
- 本地修改所有图片文件名,确保和代码里的
重新部署到Heroku
要么手动触发Heroku的部署,要么等它自动拉取GitHub的最新提交(如果开启了自动部署)。验证问题是否解决
部署完成后访问页面,同时可以通过Heroku日志确认是否还有404错误:heroku logs --tail
其他可能的小排查点
- 检查
.gitignore文件,确保没有把Photos文件夹或图片文件加入忽略列表,导致文件没上传到GitHub; - 确认所有图片文件确实已经被提交到GitHub(仓库里能看到所有20张图)。
内容的提问来源于stack exchange,提问作者jesusWalks
相关产品推荐
相关产品推荐

