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

设置环境变量后仍无法用Go连接Firebase Auth模拟器

Go Firebase Auth模拟器不生效问题解决办法
  • 问题核心:Firebase Admin SDK的Auth客户端不会自动读取FIREBASE_AUTH_EMULATOR_HOST环境变量,这和Firestore的自动识别行为不同,是导致调用生产Auth服务的原因。

解决步骤

1. 验证环境变量加载

先确认FIREBASE_AUTH_EMULATOR_HOST已被正确加载:
在终端执行命令:

echo $FIREBASE_AUTH_EMULATOR_HOST

确保输出localhost:9099,如果没有,检查.envrc的加载方式(比如是否需要执行direnv allow)。

2. 手动指定Auth模拟器地址

因为SDK不会自动识别该变量,需要在创建Auth客户端后手动配置,修改代码如下:

import "os"

// ... 原有代码 ...

app, err := firebase.NewApp(ctx, nil)
if err != nil {
  return err
}

client, err := app.Auth(ctx)
if err != nil {
  return nil, err
}

// 读取环境变量并设置模拟器
if emulatorHost := os.Getenv("FIREBASE_AUTH_EMULATOR_HOST"); emulatorHost != "" {
  client.Emulator(emulatorHost)
}

3. 排查服务账号密钥干扰

当设置了GOOGLE_APPLICATION_CREDENTIALS时,SDK可能优先走生产环境服务。开发环境可以:

  • 临时注释掉.envrc中的GOOGLE_APPLICATION_CREDENTIALS配置
  • 或者在代码中强制启用模拟器,忽略服务账号的影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:40:47