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

Next.js从pages迁移至app目录后,SSR页面如何跳转至NotFound页?

Next.js App Router 实现404逻辑与类型定义(Pages Router迁移)

核心实现要点

在App Router中,无需通过返回{ notFound: true }触发404,直接使用Next.js提供的notFound函数即可;同时可通过TypeScript明确参数类型,解决params隐式any的问题。

完整代码示例

import { notFound } from 'next/server';

// 定义params的类型,对应原逻辑中的Params接口
interface Params {
  id: string;
}

// 为组件的params指定类型
export default async function MyThingPage({ params }: { params: Params }) {
  try {
    const thing = await findThingById(params.id);
    // 找不到数据时触发404
    if (!thing) {
      notFound();
    }
    return <h1>{ thing }</h1>;
  } catch (e) {
    // 捕获异常时同样触发404
    notFound();
  }
}

对应原逻辑的说明

  • 原getServerSideProps中的params.id类型定义,通过interface Params和组件参数类型声明实现,解决了隐式any的问题。
  • 原逻辑中返回{ notFound: true }的场景,替换为调用notFound()函数,Next.js会自动渲染404页面并返回404状态码。
  • 异常捕获逻辑与原代码一致,捕获到错误时触发404。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:32:45