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

NextJS预加载字体触发Chrome警告,如何消除该提示?

解决NextJS中字体预加载的Chrome警告问题

你遇到的警告是因为Chrome检测到预加载的字体资源在页面load事件后几秒内没有被实际使用,哪怕你是有意预加载也会触发这个提示。下面是几个可行的解决办法:

1. 确保字体被CSS正确引用并使用

首先排查最基础的问题:

  • 在你的CSS文件中,通过@font-face声明字体,且src的路径要和preload标签的href完全一致(注意大小写,服务器环境通常区分大小写):
@font-face {
  font-family: 'GothamRndSSm';
  src: url('/font/GothamRndSSm-Light.otf') format('opentype');
  font-weight: 300;
  font-style: normal;
}

@font-face {
  font-family: 'GothamRndSSm';
  src: url('/font/GothamRndSSm-Book.otf') format('opentype');
  font-weight: 400;
  font-style: normal;
}
  • 确保页面中有元素实际使用这个字体,比如设置全局样式:
body {
  font-family: 'GothamRndSSm', sans-serif;
}

2. 给preload标签添加onload属性

如果已经正确引用但仍有警告,可以在preload的link标签里加上onload属性,让资源加载完成后转为常规字体引用,帮助浏览器识别资源用途:

<link
  rel="preload"
  as="font"
  type="font/otf"
  href="/font/GothamRndSSm-Light.otf"
  crossOrigin="anonymous"
  onload="this.rel='font'"
/>

3. 使用NextJS官方的next/font模块(推荐)

NextJS的next/font模块会自动处理字体的预加载、缓存和正确引用,完全避免这类警告,还能优化字体加载性能。示例用法:
在app/layout.tsx或pages/_app.tsx中:

import localFont from 'next/font/local';

// 加载自定义字体
const gothamRounded = localFont({
  src: [
    {
      path: '../public/font/GothamRndSSm-Light.otf',
      weight: '300',
      style: 'normal',
    },
    {
      path: '../public/font/GothamRndSSm-Book.otf',
      weight: '400',
      style: 'normal',
    },
  ],
  variable: '--font-gotham',
});

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html className={gothamRounded.variable}>
      <body style={{ fontFamily: 'var(--font-gotham)' }}>
        {children}
      </body>
    </html>
  );
}

用这种方式不需要手动在_document.tsx里加preload标签,NextJS会自动处理所有细节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:37:15