Next.js 14部署至生产环境后图片加载失败求助
路径大小写或写法错误
本地开发环境(比如Windows)对文件路径大小写不敏感,但Vercel用的Linux环境严格区分大小写。如果图片实际是Public/Header.png,代码里写成/public/header.png,本地能正常加载,生产环境就会找不到。另外要注意,public文件夹下的图片在Image组件的src里应该直接写/xxx.jpg,不要加/public/前缀,否则会被解析成不存在的路径。public资源未被正确部署
检查项目的.gitignore文件,有没有误把public文件夹或里面的图片排除在外,导致部署时这些资源没上传到Vercel。另外,图片文件名如果包含空格、中文等特殊字符,部分构建环境可能处理异常,建议改成英文、数字加下划线的命名格式。相对路径使用错误
本地开发时用./xxx.jpg这种相对路径可能能加载,但在生产环境的Next.js路由机制下,相对路径会解析出错。必须用/xxx.jpg这种绝对路径来引用public里的图片。Vercel缓存问题
有时候Vercel的构建缓存会导致旧的资源覆盖新内容,尝试在Vercel控制台重新部署,勾选“清除构建缓存”选项再试一次。Image组件的隐性配置问题
如果你用的是App Router,确认Image组件是从next/image导入的(不是旧版的next/legacy/image)。另外,虽然你已经设置了width和height,但如果同时使用了fill属性,需要确保父容器设置了position: relative,否则生产环境的图片布局会异常,导致看起来像是没加载。
内容的提问来源于stack exchange,提问作者Citizen Ken

