Next.js14.2.3+next-intl构建报错:根路径/page静态渲染失败
解决Next.js + next-intl构建时根路径动态渲染错误
问题分析
你已经在带[locale]参数的页面和布局中使用unstable_setRequestLocale解决了大部分动态渲染错误,但根路径/page仍然报错,核心原因是根page.tsx没有locale参数,无法调用unstable_setRequestLocale,但该页面可能间接使用了next-intl的国际化API,触发了构建时的动态渲染限制。
解决方案
直接让根页面重定向到默认语言的路由,彻底避免根页面处理任何国际化逻辑:
- 修改
src/app/page.tsx,替换为重定向逻辑:
import { redirect } from 'next/navigation'; export default function RootPage() { // 替换为你的项目默认语言,比如'en'或'zh-CN' redirect('/en'); }
确认
middleware.ts和i18n.ts配置正确:- 确保
middleware.ts能拦截非本地化路径,自动重定向到带默认locale的路由 i18n.ts中配置好支持的语言列表和默认语言
- 确保
根
layout.tsx保持原样即可,不需要在其中调用unstable_setRequestLocale——[locale]目录下的页面已经完成了locale设置,根布局仅作为容器存在。
原理说明
根路径页面不涉及任何国际化渲染,直接重定向到带locale的路由后,就不会触发next-intl的动态渲染限制。所有国际化逻辑都被限定在[locale]目录下的页面和布局中,这些页面已经通过unstable_setRequestLocale启用了静态渲染。
内容的提问来源于stack exchange,提问作者gongtzuuuu
相关产品推荐
相关产品推荐

