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

部署至Vercel时遭遇authOptions无效路由导出字段错误求助

NextAuth部署Vercel踩坑:本地正常线上报错的解决办法

本地运行完全正常的NextAuth配置代码:

import NextAuth, { NextAuthOptions } from "next-auth";
import GoogleProvider from "next-auth/providers/google";

export const authOptions: NextAuthOptions = {
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID as string,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET as string,
    }),
  ],
  pages: {
    signIn: "/signin",
  },
};

const handler = NextAuth(authOptions);

export { handler as GET, handler as POST };

部署到Vercel后出现报错,错误提示为:Error: ClientSecret is missing for GoogleProvider

解决步骤

  • 检查Vercel环境变量配置
    打开Vercel控制台进入对应项目,前往「设置」→「环境变量」页面,确认GOOGLE_CLIENT_ID和GOOGLE_CLIENT_SECRET已添加且值与本地.env文件完全一致。注意:修改环境变量后必须点击顶部「Deploy」按钮重新部署,否则新变量不会生效。
  • 验证环境变量可用性
    在auth配置文件中临时添加日志输出,部署后查看Vercel「函数」日志确认变量是否被正确读取:
    // 在authOptions定义前添加
    console.log("Google Client ID:", process.env.GOOGLE_CLIENT_ID);
    console.log("Google Client Secret:", process.env.GOOGLE_CLIENT_SECRET);
    
  • 修复类型断言隐患
    原代码中as string的强制断言会将未配置的环境变量转为字符串"undefined",引发错误。改为兜底判断更稳妥:
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID || "",
      clientSecret: process.env.GOOGLE_CLIENT_SECRET || "",
    })
    
    也可在启动时直接校验并抛出明确错误:
    if (!process.env.GOOGLE_CLIENT_ID || !process.env.GOOGLE_CLIENT_SECRET) {
      throw new Error("Google OAuth密钥未配置!");
    }
    
  • 检查Google OAuth授权配置
    登录Google Cloud控制台,将Vercel域名(含预览环境域名)添加至OAuth客户端的「已授权重定向URI」,格式为https://你的Vercel域名/api/auth/callback/google

内容的提问来源于stack exchange,提问作者Fakhrul Islam Fuad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:10:10