Firebase Admin连接Auth Emulator报ECONNREFUSED错误问题
问题根因
这个报错是Node.js 17+版本的默认DNS解析逻辑变更导致的:Node 17开始不再默认优先解析IPv4地址,会按系统DNS返回的顺序优先把localhost解析为IPv6回环地址::1,但Firebase Auth Emulator默认只绑定IPv4的127.0.0.1:9099,没有监听IPv6的9099端口,Admin SDK发请求时自然会被拒绝。
你能正常访问4000端口的Emulator控制台、iPhone模拟器能连通Auth Emulator,是因为这些客户端要么默认优先走IPv4解析,要么做了双栈兼容,和Node 17+的默认解析逻辑不匹配,所以只有Admin SDK出问题。
解决方案
选任意一种操作即可修复:
- 直接修改环境变量配置,不用
localhost,写死IPv4回环地址绕开DNS解析,这是改动最小的方案:
改完重新执行脚本就能正常拉取用户列表。export FIREBASE_AUTH_EMULATOR_HOST="127.0.0.1:9099" - 如果不想改环境变量,启动Node脚本时加参数强制优先解析IPv4:
node --dns-result-order=ipv4first 你的脚本文件名.js - 如果需要兼容IPv6访问场景,修改
firebase.json里的模拟器配置,指定Auth Emulator绑定到所有网卡地址,同时监听IPv4和IPv6:
改完重启Firebase Emulator即可生效。"emulators": { "auth": { "host": "0.0.0.0", "port": 9099 }, // 其余模拟器配置保持不变 }
内容的提问来源于stack exchange,提问作者kernelman
相关产品推荐
相关产品推荐

