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

Next.js 13 App目录路由分组报错:Non matching path () provided for /(public)

解决Next.js路由分组报错“Non matching path () provided for /(public)”

这个报错通常出现在Next.js App Router模式下,和路由分组的结构或布局组件配置有关,以下是具体排查和解决步骤:

1. 检查路由分组文件夹命名

确保(public)分组文件夹的命名完全符合要求:

  • 使用英文半角括号,不能是中文括号或全角括号
  • 括号内的分组名不能为空(比如不能写成())
  • 分组文件夹直接放在app目录下,层级正确

2. 验证布局组件的正确性

每个路由分组下的layout.jsx/tsx必须满足以下要求:

  • 默认导出一个React组件
  • 组件必须接收children参数并渲染它
  • 示例正确代码:
// app/(public)/layout.jsx
export default function PublicLayout({ children }) {
  return (
    <div className="public-container">
      {/* 公共导航、页脚等 */}
      {children}
    </div>
  );
}

如果布局组件未正确接收或渲染children,会导致路由路径匹配失败。

3. 排查路由路径引用错误

路由分组的括号部分不会出现在实际URL中,比如(public)分组下的page.jsx对应根路径/,而不是/(public)。如果你的代码中(比如链接跳转、路由配置)错误地使用了/(public)作为路径,会触发该报错。

4. 检查全局布局与分组布局的冲突

如果app根目录下存在全局layout.jsx,它会作为所有路由分组的父布局,确保全局布局同样正确接收并渲染children,不要覆盖分组布局的路径匹配逻辑。

5. 确认Next.js版本兼容性

路由分组是Next.js 13.4+ App Router的稳定功能,如果你使用的是旧版本,可能存在兼容性问题,建议升级到最新稳定版。

正确的文件夹结构示例

app/
  (auth)/
    layout.jsx       // 登录注册布局
    login/
      page.jsx
    register/
      page.jsx
  (dashboard)/
    layout.jsx       // 后台面板布局
    home/
      page.jsx
    settings/
      page.jsx
  (public)/
    layout.jsx       // 公共页面布局
    page.jsx         // 对应根路径 /
    about/
      page.jsx
  layout.jsx         // 可选全局布局(包裹所有分组)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:37:11