nextjs breaking_change ai_generated true

错误:app/ 目录不支持 getInitialProps。请改用 generateMetadata、generateStaticParams 或服务器组件。

Error: getInitialProps is not supported in the app/ directory. Use generateMetadata, generateStaticParams, or server components instead.

ID: nextjs/app-dir-getinitialprops-legacy

其他格式: JSON · Markdown 中文 · English
90%修复率
87%置信度
1证据数
2023-05-16首次发现

版本兼容性

版本状态引入弃用备注
Next.js 13.x active
Next.js 14.x active
Next.js 15.x active

根因分析

app/ 目录使用新的路由模型,不支持 getInitialProps,这是 Pages Router 的旧功能。从 pages/ 迁移到 app/ 的开发人员错误地使用了 getInitialProps。

English

The app/ directory uses a new routing model that does not support getInitialProps, which was a legacy Pages Router feature. Developers migrating from pages/ to app/ mistakenly use getInitialProps.

generic

官方文档

https://nextjs.org/docs/app/building-your-application/upgrading/app-router-migration#step-3-migrating-getinitialprops

解决方案

  1. Replace getInitialProps with server component data fetching: directly fetch data in the component body using async/await. For dynamic metadata, use generateMetadata.
  2. If the data is needed on every page, use a root layout with a server component that fetches data and passes it via context or props.

无效尝试

常见但无效的做法:

  1. 90% 失败

    The app router explicitly disallows getInitialProps; it will throw this error at build or runtime.

  2. 70% 失败

    Even if the component is imported, its getInitialProps will not run; the app router ignores it entirely.

  3. 60% 失败

    getServerSideProps is also not supported in app/; it must be replaced with server components or fetch with cache options.