Next.js 15集成Auth0动态API路由报错:需先await params
解决Next.js 15 + @auth0/nextjs-auth0的params await错误
问题原因
Next.js 15对App Router动态路由的参数机制做了变更:动态路由的params不再是直接的JavaScript对象,而是一个Promise,必须先通过await解析后才能访问其属性(比如params.auth0)。你遇到的错误就是因为直接访问了未解析的params属性。
解决方案
修改你的src/app/api/auth/[auth0]/route.ts文件(这是Auth0集成所需的动态API路由文件),确保在使用params前先await解析它:
基础适配代码
import { handleAuth } from '@auth0/nextjs-auth0'; import type { NextRequest } from 'next/server'; export async function GET(req: NextRequest, { params }: { params: Promise<{ auth0: string }> }) { // 解析params Promise const resolvedParams = await params; // 将解析后的参数传递给handleAuth return handleAuth()(req, { params: resolvedParams }); }
带自定义逻辑的适配代码
如果需要自定义登录、回调等流程,可以单独处理对应的方法:
import { handleAuth, handleLogin, handleCallback } from '@auth0/nextjs-auth0'; import type { NextRequest } from 'next/server'; export async function GET(req: NextRequest, { params }: { params: Promise<{ auth0: string }> }) { const resolvedParams = await params; return handleAuth({ login: handleLogin({ // 自定义登录跳转地址 redirectUri: `${process.env.NEXT_PUBLIC_APP_URL}/api/auth/callback`, }), callback: handleCallback({ // 自定义回调后的处理逻辑 }) })(req, { params: resolvedParams }); }
验证步骤
- 保存修改后的
route.ts文件 - 重启Next.js开发服务器
- 再次访问
/api/auth/login,错误应该消失
内容的提问来源于stack exchange,提问作者xinhnd
相关产品推荐
相关产品推荐

