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

Next.js 14 + NextAuth v5 Beta部署Azure WebApp时构建报错:auth不是合法的Route导出字段

Next.js 14 + NextAuth v5 Beta部署Azure WebApp时构建报错:auth不是合法的Route导出字段

遇到这个问题别慌,我来帮你梳理清楚原因和解决办法:

问题根源

Next.js App Router 下的 route.tsx 文件是专门用来定义API端点的HTTP请求处理器的,它对导出内容有严格限制——只能导出GET、POST、PUT、DELETE这类对应HTTP方法的函数。你现在把 auth、signIn、signOut 这些NextAuth的辅助工具函数也一起导出了,这就违反了Next.js的路由类型校验规则,所以构建时会抛出这个错误。

解决方案:拆分导出文件

我们只需要把NextAuth的配置和辅助函数移到一个独立文件中,让路由文件只负责导出HTTP处理函数即可:

  1. 创建独立的Auth配置文件
    新建一个比如 app/lib/auth.ts(路径可以根据你的项目结构调整),把所有NextAuth的配置和导出都放在这里:
import NextAuth from "next-auth";
import AzureADProvider from "next-auth/providers/azure-ad";

export const {
    handlers: { GET, POST },
    auth,
    signIn,
    signOut,
} = NextAuth({
  providers: [
    AzureADProvider({
      clientId: process.env.AZURE_AD_CLIENT_ID,
      clientSecret: process.env.AZURE_AD_CLIENT_SECRET,
      tenantId: process.env.AZURE_AD_TENANT_ID,
    })
  ]
})
  1. 修改原路由文件
    回到 app/api/auth/[...nextauth]/route.tsx,只从刚才的配置文件导入并导出HTTP方法处理器:
import { GET, POST } from "@/app/lib/auth";

export { GET, POST };

为什么这么做?

这样拆分后,路由文件完全符合Next.js的API路由规范,而 auth、signIn、signOut 这些工具函数则可以在你需要的地方(比如服务器组件、客户端组件、中间件里)直接从 @/app/lib/auth 导入使用,既不影响功能,又能顺利通过Azure WebApp的构建校验。

备注:内容来源于stack exchange,提问作者charan vendra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 12:04:32