H5 图片路径不统一,导致线上部分图片无法按预期展示(assetPrefix 与 basePath 行为不一致)

问题:H5网页头像,点赞和评论icon没有出现

  • 环境:
    • 构建: Next.js 13.2.4
    • 配置: assetPrefix = '/pr',basePath 未开启
  • 影响范围:
    • 页面: H5 页面
    • 资源: 小图标/本地图(thumbsup.png、comment.png 等)
  • 现象: 在浏览器中
    • logo 正常:请求路径为 /pr/_next/static/media/logo.xxx.png
    • 其他图片异常:路径为 /_next/image?url=%2Fpr%2Fthumbsup.png...(优化路由未带 /pr 前缀),浏览器 Sources 下看不到对应 /_next/static/media/* 条目
  • 预期:
    • 所有图片路径风格统一,均能在 test 环境正常展示;优化路由或静态直链应一致且带正确前缀
  • 初步根因分析:
    • Next 的图片优化端点 /_next/image 不受 assetPrefix 影响,仅受 basePath 控制;当前仅配置了 assetPrefix,未开启 basePath,导致优化路由与静态直链前缀不一致
    • 组件内图片用法不统一:部分使用静态导入+自定义 loader(绕过优化),部分使用字符串路径(触发优化路由)
  • 相关证据:
    • 本地构建产物存在 /.next/static/media/thumbsup..png、comment..png
    • 线上通过浏览器面板 Network发现:logo 在路径 /pr/_next/static/media/...下;但是没有thumbsup和comment
  • 修复方案:
    • 统一使用静态导入并禁用优化:
    • import thumbsup from '@/public/thumbsup.png'
    • <Image src={thumbsup} width={22} height={22} unoptimized /> 或 <Image src={thumbsup} width={22} height={22} loader={({src}) => src}/>
相关推荐
福兮说7 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
郑州光合科技余经理8 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
小呆呆6668 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
Dovis(誓平步青云)9 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan9 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_10 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒10 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
广州华水科技10 小时前
大坝安全监测解决方案:单北斗GNSS形变监测系统应用与维护
前端
yivifu11 小时前
中文古籍电子书注释集成
前端·javascript·python·beautifulsoup·epub
默_笙12 小时前
🛴 从散件到整机:DeepAgents 与 Agent 身上预留的那些"插槽"(前置介绍)
前端·javascript