Next.js 13.4创建多页面时为什么会出现404错误怎么解决

来源:建站教程作者:上海GEO公司头衔:草根站长
导读:本期聚焦于小伙伴创作的《Next.js 13.4创建多页面时为什么会出现404错误怎么解决》,敬请观看详情。把文件放进app目录却访问不到页面,控制台只返回404,这是升级到Next.js 13.4后不少人遇到的尴尬。问题通常出在App Router的约定目录结构:只有命名为page.js、page.tsx的文件才会被识别为可路由页面,普通组件文件不会生成路径。另一个常见原因是父级目录缺少layout文件,导致路由树断裂。本文从文件命名、目录层级与默认导出三个角度给出排查步骤,并对比Pages Router的旧写法,帮你快速定位多页面配置失误,让新增页面正常响应。

在Next.js 13.4中,使用App Router模式开发项目时,很多团队在扩展多页面功能时发现新加的页面一律返回404。这并非框架缺陷,而是路由系统对文件约定更加严格。理解其匹配规则后,问题通常能在几分钟内解决。

一、App Router的页面识别机制

Next.js 13.4引入的App Router以文件系统作为路由基础,但和旧的Pages Router不同,它只把特定文件名视作页面入口。在app目录下的任何层级中,必须存在名为page.jspage.jsxpage.tsx的文件,该文件路径才会暴露为可访问的URL。

例如,你希望创建/dashboard/settings页面,那么文件应当是app/dashboard/settings/page.tsx。如果你写成app/dashboard/settings/index.tsx或者app/dashboard/settings/Settings.tsx,框架不会为其生成路由,直接访问就会404。这一点和Pages Router允许index.*作为默认页面的逻辑完全不一样。

下面的代码展示了一个正确的页面文件写法:

// app/dashboard/settings/page.tsx
export default function SettingsPage() {
  return (
    <div>
      <h1>系统设置</h1>
      <p>这里是多页面中的设置页</p>
    </div>
  );
}

二、layout缺失导致的路由树断裂

除了页面文件命名,App Router要求每个有页面的子目录链路上最好具备layout.tsx,虽然不是每一级都强制,但根目录app/layout.tsx必须存在。若你在app下新建了子目录却忘了根布局,或者把布局写错位置,框架在构建路由树时会忽略该分支,从而让其中的页面全部404。

另外一个易错点是:如果你使用嵌套路由,父目录若只有page.tsx而没有layout.tsx,子目录页面仍可访问;但若父目录完全没有任何路由文件,仅作为分组文件夹,应使用括号路由如app/(shop)/product/page.tsx来避免路径冲突。混淆了普通目录与路由目录,也会让页面看似存在却无法命中。

我们对比一下错误与正确结构:

目录写法访问路径结果
app/about/About.tsx/about404错误
app/about/page.tsx/about正常渲染
app/layout.tsx缺失任意子页面构建失败或404

三、默认导出与服务器端组件约束

App Router中的页面组件必须采用默认导出(export default),若使用命名导出,路由系统无法识别入口,同样返回404。此外,在13.4版本中,页面文件默认是服务器端组件,如果你在文件中误用仅浏览器端可用的API且未加'use client'指令,虽然不一定直接404,但可能在某些动态渲染下抛错而表现为空白或丢失页面。

排查时建议运行next dev并观察终端输出的路由表,确认目标路径是否出现在List of pages中。若未出现,优先检查文件名与目录层级。若已出现但仍404,再检查组件导出方式与是否存在同路由的冲突文件。

示例:确保使用默认导出

// app/contact/page.jsx
export default function Contact() {
  return (
    <section>
      <h2>联系我们</h2>
      <p>电话:400-000-0000</p>
    </section>
  );
}

四、与Pages Router的兼容方案

如果项目尚未完全迁移,Next.js 13.4允许app与pages目录共存。但若你在pages目录下建了pages/about.tsx,又在app下建了app/about/page.tsx,优先级会导致其中之一被忽略。官方规则是:当路径冲突时,app目录下的路由优先,pages中的对应文件失效,若配置不清就容易让人误以为自己写的pages页面突然404了。

因此创建多页面时,先确定统一路由策略。若采用App Router,就将所有新页面移入app并按page.*命名;若暂用Pages Router,则避免建立同名app子目录。清晰的结构是杜绝404的根本。

总结:Next.js 13.4多页面404的核心原因在于App Router只认page文件、依赖布局树且要求默认导出。按约定调整目录与导出方式即可解决。

Next.jsApp_Router404_error修改时间:2026-08-04 14:09:34

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。