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

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 });
}

验证步骤

  1. 保存修改后的route.ts文件
  2. 重启Next.js开发服务器
  3. 再次访问/api/auth/login,错误应该消失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:21:02