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

在Next.js 13中为Tailwind添加Google Fonts时遭遇ReferenceError

问题:NextJS + Tailwind 自定义字体报错 fontFamily is not defined

我想设置一款自定义字体,这样写代码时不用逐个定义字体。我按照NextJS官方文档操作后,出现了如下错误:

./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[1].oneOf[13].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[1].oneOf[13].use[2]!./src/styles/globals.css
ReferenceError: fontFamily is not defined

相关代码

_app.js

import { Roboto } from "next/font/google";

const roboto = Roboto({
  weight: ["300", "400", "500", "700"],
  style: ["normal", "italic"],
  subsets: ["latin"],
});

export default function App({ Component, pageProps }) {
  return (
    <main className={`${roboto.variable} font-sans`}>
      <Component {...pageProps} />
    </main>
  );
}

tailwind.config.js

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
    "./src/components/**/*.{js,ts,jsx,tsx,mdx}",
    "./src/app/**/*.{js,ts,jsx,tsx,mdx}",
  ],
  theme: {
    extend: {
      fontFamily: {
        sans: ["var(--font-roboto)", ...fontFamily.sans],
      },
      backgroundImage: {
        "gradient-radial": "radial-gradient(var(--tw-gradient-stops))",
        "gradient-conic":
          "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))",
      },
    },
  },
  plugins: [],
};

globals.css

@tailwind base;
@tailwind components;
@tailwind utilities;

解决方案

报错的核心原因是**tailwind.config.js里引用的fontFamily.sans未定义**——你试图扩展Tailwind默认的sans字体,但没有导入默认主题配置。有两种修复方式:

方式1:导入Tailwind默认主题

修改tailwind.config.js,先引入defaultTheme,再用它来获取默认的sans字体列表:

/** @type {import('tailwindcss').Config} */
const { defaultTheme } = require('tailwindcss');

module.exports = {
  content: [
    "./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
    "./src/components/**/*.{js,ts,jsx,tsx,mdx}",
    "./src/app/**/*.{js,ts,jsx,tsx,mdx}",
  ],
  theme: {
    extend: {
      fontFamily: {
        sans: ["var(--font-roboto)", ...defaultTheme.fontFamily.sans],
      },
      backgroundImage: {
        "gradient-radial": "radial-gradient(var(--tw-gradient-stops))",
        "gradient-conic":
          "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))",
      },
    },
  },
  plugins: [],
};

方式2:手动指定 fallback 字体

如果不需要Tailwind默认的sans字体,可以直接替换成通用的系统无衬线字体:

fontFamily: {
  sans: ["var(--font-roboto)", "sans-serif"],
},

另外确认_app.js里的roboto.variable类名已正确添加到根元素,Next.js会自动生成--font-roboto这个CSS变量,这部分你的代码是没问题的。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:43:31