OpenNext/Cloudflare 的兼容性约束,params 和 searchParams 必须声明为 Promise 异步类型
在使用 OpenNext/Cloudflare 生态(如 @opennextjs/cloudflare 1.9.x 及以上)部署 Next.js 15+ 项目时,所有动态路由 page/route 的 params 和 searchParams 必须声明为 Promise 类型。
December 11, 2025
在使用 OpenNext/Cloudflare 生态(如 @opennextjs/cloudflare 1.9.x 及以上)部署 Next.js 15+ 项目时,所有动态路由 page/route 的 params 和 searchParams 必须声明为 Promise 类型(如 params: Promise<{ slug: string }>),并在函数体内 await。否则会因类型不兼容导致构建失败。
// src/app/blog/[slug]/page.tsx
// 1. 导出文章元数据
export async function generateMetadata({
params,
}: {
params: Promise<{ slug: string }>;
}) {
// 在函数体内 await
const { slug } = await params;
}
// 2. 导出页面内容
export default async function BlogPage({
params,
}: {
params: Promise<{ slug: string }>;
}) {
// 在函数体内 await
const { slug } = await params;
}
此要求为 OpenNext/Cloudflare 的兼容性约束,与 Next.js 官方类型定义不同,请勿使用同步对象类型声明 params/searchParams。