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

Next.js静态图片本地正常,Cloudflare Pages部署后报404

静态图片在Cloudflare Pages生产环境找不到,但本地正常(Next.js项目)

问题描述

我在Next.js项目中将所有静态图片放在public/images/目录下,使用Next.js的Image组件引入,本地localhost运行完全正常,但部署到Cloudflare Pages后图片无法找到。

相关代码

image.tsx

return (
<Image
  src="/images/frame1.png"
  width="1000"
  height="1000"
  alt="Control description"
  style={{
    height: "auto",
    maxWidth: "100%",
    userSelect: "none",
  }}
/>
)

next.config.js

/** @type {import('next').NextConfig} */
const nextConfig = {
  reactStrictMode: true,
  swcMinify: true,
};

module.exports = nextConfig;

环境与截图

  • 部署环境:Cloudflare Pages
  • 部署截图:部署截图
  • 本地运行截图:本地运行截图
  • 文件结构截图:文件结构截图

求排查问题原因并给出解决方案。


解决方案

1. 检查路径大小写一致性

本地系统(Windows/macOS)默认不区分文件路径大小写,但Cloudflare Pages基于Linux环境,严格区分大小写。

  • 核对代码中/images/frame1.png与public/images/下实际文件名的大小写是否完全匹配,避免出现实际文件为Frame1.png但代码写frame1.png的情况。

2. 禁用Next.js图片优化

Next.js默认的图片优化服务无法在Cloudflare Pages直接生效,会导致生产环境图片路径解析错误。修改next.config.js添加图片配置:

/** @type {import('next').NextConfig} */
const nextConfig = {
  reactStrictMode: true,
  swcMinify: true,
  images: {
    unoptimized: true, // 禁用图片优化,使用原始路径
  },
};

module.exports = nextConfig;

修改后重新构建部署,Image组件会直接引用原始图片路径,避免优化后的路径找不到资源。

3. 确认部署时public目录完整上传

  • 检查项目.gitignore文件,确认未误排除public/images/目录;
  • 查看Cloudflare Pages部署日志,确认public/images/下的图片文件已被正确上传;
  • 若使用静态导出,需确保构建命令为next build && next export,并在Cloudflare Pages配置中指定输出目录为out。

验证步骤

直接访问生产环境图片的原始路径(如https://你的域名/images/frame1.png):

  • 若返回404,说明文件未上传或路径错误;
  • 若能正常访问,说明问题出在Next.js Image组件的优化配置上,按步骤2处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:15:57