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

Next.js+next-auth部署Vercel时unstable_getServerSession报504超时

解决Next.js+NextAuth部署Vercel后504超时问题

常见原因及修复步骤

1. 环境变量配置不全/错误

本地开发时.env里的变量要完整同步到Vercel平台:

  • 登录Vercel控制台,进入你的项目,在Settings → Environment Variables中检查:
    • NEXTAUTH_URL必须设置为生产环境域名(比如https://your-project.vercel.app),不能用localhost
    • 数据库连接字符串、OAuth服务商密钥(如GOOGLE_CLIENT_ID)等所有依赖变量都要正确配置,且为生产环境有效值

2. 替换过时的unstable_getServerSession

NextAuth v4.20.0后unstable_getServerSession已废弃,改用稳定版getServerSession:

  • 先升级NextAuth到最新版本:
    npm update next-auth
    
  • 修改页面代码中的导入和调用:
    // 原代码
    import { unstable_getServerSession } from "next-auth/next";
    // 替换为
    import { getServerSession } from "next-auth/next";
    
    // getServerSideProps中调用也替换
    const session = await getServerSession(context.req, context.res, authOptions);
    

3. 优化authOptions中的异步逻辑

如果用credentials认证,检查authorize函数的性能:

  • 确保数据库查询有合适的索引,避免慢查询
  • 若使用远程数据库,确认Vercel的IP已加入数据库白名单(部分云数据库需要配置)
  • 避免在authorize中执行不必要的复杂操作,减少请求耗时

4. 调整Vercel函数超时设置

Vercel Serverless函数默认超时10秒(免费版上限10秒,付费版30秒),若必要可延长超时:
在项目根目录创建vercel.json文件:

{
  "functions": {
    "pages/api/**/*.js": {
      "maxDuration": 10 // 根据实际情况调整,免费版最高10
    }
  }
}

优先优化代码性能,而非依赖延长超时

5. 统一Node版本

Vercel默认Node版本可能与本地不一致,导致兼容问题:
在项目根目录创建.nvmrc文件,指定和本地一致的Node版本,比如:

v18.17.0

6. 查看Vercel函数日志定位问题

登录Vercel控制台,进入Functions页面,查看对应页面的函数日志,找到具体的超时触发点(比如数据库连接失败、API调用超时等),针对性修复


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:25:26