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

修复Firebase未定义错误,实现联系表单数据存入Firebase Database

修复Firebase Database表单提交中的"firebase is not defined"错误

你的问题出在使用Firebase 9.x模块化SDK时,仍沿用了旧版全局firebase对象的调用方式,而模块化版本要求显式导入所需模块并使用对应API。以下是修复步骤和完整代码:

修复要点

  • 显式导入Firebase Database的核心方法
  • 替换旧版数据库引用、数据推送的语法为模块化写法

修改后的JavaScript代码(index-script2.js)

// 导入所需的Firebase模块
import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.9.0/firebase-app.js'
import { getDatabase, ref, push, set } from 'https://www.gstatic.com/firebasejs/9.9.0/firebase-database.js'

const firebaseConfig = {
  apiKey: '',
  authDomain: '',
  databaseURL: '',
  projectId: '',
  storageBucket: '',
  messagingSenderId: '',
  appId: '',
}

// 初始化Firebase
const app = initializeApp(firebaseConfig)
// 获取数据库实例并创建消息集合引用
const db = getDatabase(app)
const messageRef = ref(db, 'messages')

// 监听表单提交
document.getElementById('contactForm').addEventListener('submit', submitForm)

function submitForm(e) {
  e.preventDefault()
  // 获取表单值
  const name = getInputVal('yourName')
  const gender = getInputVal('gender')
  const message = getInputVal('input-area2')

  saveMessage(name, gender, message)
}

// 获取表单输入值的工具函数
function getInputVal(id) {
  return document.getElementById(id).value
}

// 保存消息到Firebase Database
function saveMessage(name, gender, message) {
  // 创建新的消息节点引用
  const newMessageRef = push(messageRef)
  // 设置节点数据
  set(newMessageRef, {
    name: name,
    gender: gender,
    message: message,
  })
}

确认HTML配置

确保你的HTML中引入JS文件的标签带有type="module"属性,你当前的代码已经正确设置:

<script src="index-script2.js" type="module"></script>

最后,记得填充firebaseConfig中的真实配置信息(从Firebase控制台获取),否则数据库连接会失败。

内容的提问来源于stack exchange,提问作者Amr El-Nagdy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 08:18:20