原生JS使用Firebase时promptForCredentials未定义报错求解
Firebase Auth 删除账号时报
promptForCredentials is not defined 解决方法 报错核心原因
Firebase Auth 官方SDK(包括你使用的v8.2.7版本)不存在内置的promptForCredentials全局方法,也没有对应这个方法的独立库需要导入。
这个方法名是大量第三方教程里自定义的工具函数,作用一般是弹出输入框收集用户的验证密码,不属于Firebase官方API,直接复制教程里的调用代码就会触发未定义报错。
修复步骤
你已经在页面里放了id为deletePass的密码输入框用来收集用户验证密码,不需要额外封装方法或者引库,直接按Firebase v8的官方API生成认证凭证即可,修正后的删除按钮点击逻辑如下:
deleteConfirmed.addEventListener('click', () => { // 读取用户输入的当前账号密码 const inputPassword = passConfirmed.value.trim(); if (!inputPassword) { alert('请输入当前账号密码确认删除操作'); return; } // 调用Firebase内置方法生成邮箱登录场景的认证凭证 const credential = firebase.auth.EmailAuthProvider.credential( user.email, inputPassword ); // 重新认证 user.reauthenticateWithCredential(credential).then(() => { // 认证通过后执行账号删除逻辑 user.delete().then(() => { alert('账号已成功删除'); location.href = "/login"; }).catch(err => { console.error('账号删除失败:', err); }); }).catch((error) => { console.error('身份验证失败:', error); alert('密码错误,请重新输入'); }); })
额外说明
- 你当前HTML中引入的三个Firebase CDN脚本已经覆盖了账号认证、删除所需的全部功能,不需要额外加载其他依赖。
- 你原本的代码只完成了重新认证的流程框架,缺少认证通过后实际调用
user.delete()执行删除的逻辑,补上之后功能才能正常跑通。 - 如果你确实想要类似弹窗输入密码的效果,自己写个弹窗组件收集输入值即可,不需要找所谓的
promptForCredentials对应库。
内容的提问来源于stack exchange,提问作者Mergo22
相关产品推荐
相关产品推荐

