firebase-functions模块无导出成员'auth'的问题求助
firebase-functions模块无导出成员'auth'的问题求助
嘿,各位大佬,我最近在写Firebase云函数的时候碰到个棘手的问题,想请大家帮忙看看!
我想要实现监听用户认证创建的事件,写了这样一段代码:
export const onUserAuthenticated = auth.user().onCreate(async (userRecord) => { const adminFirestore = getFirestore(); // ... 后续业务逻辑 });
我的package.json里,firebase-functions的版本是:
"firebase-functions": "~6.3.1",
我是这样导入auth的:
import { auth } from 'firebase-functions';
结果运行的时候直接报错了:
Module "firebase-functions" has no exported member 'auth'.
试过各种检查导入路径、版本的方法都没解决,有没有大佬知道这是咋回事呀?万分感谢!
解决方案
这个问题其实是因为firebase-functions v6.x版本开始,API结构发生了变化:
方案1:迁移到推荐的v2 API(更现代化,是未来的主流)
v2版本的API把触发器单独拆分出来了,你需要修改导入方式和代码写法:
// 导入v2的用户创建触发器 import { onUserCreated } from 'firebase-functions/v2/auth'; import { getFirestore } from 'firebase-admin/firestore'; export const onUserAuthenticated = onUserCreated(async (event) => { // 从event中获取用户记录 const userRecord = event.data; const adminFirestore = getFirestore(); // ... 你的业务逻辑 });
方案2:继续使用v1 API(临时过渡方案)
如果暂时不想改代码结构,可以从v1的子路径导入auth:
// 导入v1版本的auth模块 import { auth } from 'firebase-functions/v1/auth'; export const onUserAuthenticated = auth.user().onCreate(async (userRecord) => { const adminFirestore = getFirestore(); // ... 原来的业务逻辑可以保持不变 });
原因说明
firebase-functions从v6版本开始,默认导出的是v2版本的模块化API,原来v1版本的auth等模块不再放在根路径下导出,而是移到了/v1子路径中,所以直接从firebase-functions导入auth就会提示找不到导出成员啦。
备注:内容来源于stack exchange,提问作者pax
相关产品推荐
相关产品推荐

