Firebase无法创建账号且无报错求助:前端注册登录功能开发异常
问题排查与修复方案
- SDK版本不兼容
你在HTML中引入的Firebase核心库为v9.0.2,Auth和Database库为v8.6.8,跨大版本的SDK完全不兼容,会导致初始化失败、API调用无响应。
修复:将所有Firebase SDK统一为同个v8版本,修改firebase-app引入地址为:
<script src="https://www.gstatic.com/firebasejs/8.6.8/firebase-app.js"></script>
- 表单默认提交打断异步逻辑
HTML中<button>默认属性为type="submit",点击后会触发表单提交跳转至/register,异步的Firebase注册逻辑还未执行就会被页面刷新中断,因此无报错也无响应。
修复:给两个按钮添加type="button"属性,阻止默认提交行为:
<button type="button" onclick="login()">Login</button> <button type="button" onclick="register()">Register</button>
函数名大小写不匹配
JS中定义的注册、登录函数为小写开头的register()、login(),HTML的onclick事件中写的是大写开头的Register()、Login(),JS区分大小写,导致点击按钮时根本没有调用到对应的执行函数。
修复:统一两边的函数名大小写,保持完全一致即可。密码校验逻辑错误
validate_password函数中直接将字符串类型的password和数字6对比,未取密码长度,校验逻辑完全失效。
修复:修改校验逻辑为判断密码长度:
function validate_password(password) { if (password.length < 6) { return false } return true }
必填字段缺失
register函数中需要获取full_name、favourite_song、milk_before_cereal三个字段的值并做非空校验,但你的HTML表单中没有对应ID的输入框,调用getElementById取值会得到undefined,非空校验不通过直接return,不会走到后续的Firebase注册逻辑。
修复:要么在表单中补充对应三个输入框,要么暂时注释掉register函数中这三个字段的取值、校验逻辑。小问题:CSS引入标签未闭合
HTML中引入sign.css的link标签末尾缺少闭合符>,虽然不影响JS逻辑,但建议修正避免样式加载异常。
内容的提问来源于stack exchange,提问作者Cruel
相关产品推荐
相关产品推荐

