问题: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}/>