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

Next.js使用Image组件出现<link rel=preload>无效imagesrcset错误原因

报错原因

该报错由Next.js Image组件的预加载逻辑触发:

  • 你给Image组件设置了priority={true}属性,Next.js会自动生成<link rel="preload">标签预加载这张图片,用于优化首屏LCP性能
  • 你使用的是外部域名下的图片,没有在next.config.js中配置对应的外部图片白名单规则,Next.js无法为这张外部图片生成合法的srcset值,最终导致预加载标签的imagesrcset属性格式错误,抛出报错
  • 图片可以正常渲染是因为Image组件的基础渲染逻辑不受预加载逻辑影响,仅预加载步骤失败而已

解决方案

可根据需求任选一种方案修复:

方案1:配置外部图片白名单(最推荐)

在项目根目录的next.config.js中添加对应域名的访问规则:

// next.config.js
module.exports = {
  images: {
    // Next.js 13+ 版本使用remotePatterns配置
    remotePatterns: [
      {
        protocol: 'http',
        hostname: 'ticket-t01.s3.eu-central-1.amazonaws.com',
        pathname: '/**',
      },
    ],
    // Next.js 12及更早版本使用domains配置
    // domains: ['ticket-t01.s3.eu-central-1.amazonaws.com']
  }
}

配置完成后重启项目即可,Next.js会正常生成srcset和预加载标签,报错自动消失。

方案2:关闭图片优化

如果不需要响应式图片能力,可以给Image组件添加unoptimized={true}属性,让Next.js直接使用你传入的src地址,不做优化处理:

<Image
  src={`http://ticket-t01.s3.eu-central-1.amazonaws.com/${props[organizationId].events[programId].imgId}_0.cover.jpg`}
  className={styles.carouselImage}
  layout="responsive"
  width={865}
  height={513}
  key={`${props[organizationId].events[programId].imgId}`}
  priority={true}
  unoptimized={true}
/>

方案3:移除预加载配置

如果这张图片不是首屏核心LCP元素,不需要预加载,直接删掉priority={true}属性即可,Next.js不会生成对应的预加载标签,报错自动消失。

内容的提问来源于stack exchange,提问作者János

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:57:03