Vercel部署Next.js应用后Firebase Authentication仍指向localhost:9099问题
解决Next.js + Firebase部署至Vercel后仍请求localhost:9099的问题
修正Firebase Auth Domain配置误区
不要将Vercel域名填入NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,这个配置项应该填Firebase提供的官方认证域名,格式为[你的Firebase项目ID].firebaseapp.com,可在Firebase控制台的项目设置中获取。检查并同步环境变量
- 本地.env文件中所有
NEXT_PUBLIC_前缀的Firebase配置项(API_KEY、PROJECT_ID、AUTH_DOMAIN等)必须是生产环境有效值,不能包含本地模拟器相关配置 - 登录Vercel项目后台,进入「Settings -> Environment Variables」,确认所有
NEXT_PUBLIC_前缀的变量已正确添加,且值与本地一致;注意区分开发/预览/生产环境的变量配置,确保生产环境变量无误
- 本地.env文件中所有
禁用生产环境的Firebase模拟器
检查代码中是否存在模拟器相关逻辑,比如:if (process.env.NODE_ENV === 'development') { connectAuthEmulator(auth, "http://localhost:9099"); }确保生产环境(Vercel部署默认是production环境)不会触发模拟器连接代码。若使用环境变量控制模拟器开关,需确认Vercel生产环境未设置启用模拟器的变量(如
NEXT_PUBLIC_USE_EMULATOR=true)清除构建缓存
- 本地:删除
.next文件夹和node_modules/.cache目录,重新执行npm run build - Vercel平台:找到最近的部署记录,点击「Redeploy」并勾选「Clear build cache」,强制重新构建应用
- 本地:删除
配置Firebase授权域名
登录Firebase控制台,进入「Authentication -> 设置 -> 授权域名」,添加你的Vercel应用域名(如xxx.vercel.app),否则Firebase会拒绝来自该域名的认证请求
内容的提问来源于stack exchange,提问作者Harry Shing
相关产品推荐
相关产品推荐

