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

使用Next.js与Styled Components引入本地字体报错如何解决?

问题原因

当前报错是因为Next.js默认没有配置处理.ttf字体文件的webpack加载规则,且你不需要通过import的方式引入public目录下的静态资源,有两种解决方案可选:

方案1:无需修改配置(推荐)

public目录下的所有资源会默认对外暴露在根路径下,不需要import引入,直接修改你的全局样式代码即可:

  • 删掉import regularFont from "../public/fonts/IRANYekanRegular.ttf"; 这行导入代码
  • 修改@font-face的src路径,同时修正font-family多余的空格问题:
const GlobalStyle = createGlobalStyle<{ lang?: Languages_type | string }>`
@font-face {
  font-family: "ir";
  src: local("ir"), url(/fonts/IRANYekanRegular.ttf) format("truetype");
}     
 
body,
html {
  margin: 0;
  font-family: "ir";
}
`;

修改后重启项目即可正常生效。

方案2:配置webpack支持导入字体文件

如果你需要通过import的方式引入字体资源,在项目根目录的next.config.js文件中添加如下配置:

/** @type {import('next').NextConfig} */
const nextConfig = {
  webpack(config) {
    // 添加字体文件处理规则
    config.module.rules.push({
      test: /\.(woff|woff2|eot|ttf|otf)$/i,
      type: 'asset/resource',
      generator: {
        // 打包后字体文件的输出路径
        filename: 'static/fonts/[hash][ext][query]'
      }
    })
    return config
  }
}

module.exports = nextConfig

配置完成后重启项目,原来的import引入方式就可以正常使用了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:36:01