NextJS使用Image组件拉取Strapi图片报上游响应无效错误如何解决
1 Next.js 配置校验
- 检查
next.config.js中的图片远程规则配置,Next 13+ 已废弃旧版domains配置,必须使用images.remotePatterns完整匹配Strapi服务的协议、域名、端口、路径规则,参考配置如下:
/** @type {import('next').NextConfig} */ const nextConfig = { images: { remotePatterns: [ // 本地开发Strapi配置示例 { protocol: 'http', hostname: 'localhost', port: '1337', pathname: '/uploads/**', }, // 生产环境Strapi配置示例 { protocol: 'https', hostname: '你的Strapi生产服务域名', pathname: '/uploads/**', } ], }, } module.exports = nextConfig
- 确认未配置错误的自定义
images.loader,无特殊需求保持默认内置图片优化逻辑即可。
2 Strapi 服务与资源校验
- 直接在浏览器地址栏输入你要加载的图片完整URL,确认可以正常访问,如果直接访问也报错,说明是Strapi侧问题,和Next.js无关。
- 检查Strapi公众角色的媒体访问权限:进入Strapi后台→设置→用户与权限插件→角色→公众,勾选
upload插件下的find、findOne权限并保存,否则未登录状态无法访问媒体资源。 - 确认图片地址拼接正确:Strapi接口返回的媒体资源路径默认是相对路径(如
/uploads/xxx.png),需要手动拼接Strapi服务域名前缀后再传给Image组件的src属性,不能直接传相对路径。
3 Image 组件传参校验
- 检查
src属性传入的地址是否有多余转义字符、空格,或者缺少http/https协议头,必须传入完整绝对路径。 - 确认
width、height属性正确传入,或者使用fill属性时父容器已设置position: relative,非法尺寸参数会触发图片优化服务400错误。 - App Router下的新版Image组件已废弃
layout属性,不要传入废弃参数,改用fill、sizes等属性实现布局需求。
4 快速定位验证
给Image组件添加unoptimized属性跳过Next.js图片优化逻辑,如果添加后图片可以正常加载,说明问题出在Next.js图片优化服务配置上,优先排查第一步的next.config.js配置即可。
内容的提问来源于stack exchange,提问作者Ibo
相关产品推荐
相关产品推荐

