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

执行firebase serve时出现CANNOT GET/错误无法访问自建站点

问题排查与修复方案

CANNOT GET / 报错的核心原因是没有配置根路径的请求处理逻辑,也没有打通firebase hosting和云函数的路由转发,可按以下步骤逐一修复:

1. 云函数侧代码修正

你当前的云函数只初始化了express实例,既没有定义路由规则,也没有导出为firebase可识别的云函数:

补充根路径路由与导出逻辑

在你现有云函数代码末尾添加以下内容:

// 定义根路径请求处理逻辑
app.get('/', async (req, res) => {
  const deviceData = await getFirestore()
  // 渲染views目录下的index.hbs模板,可按需传递参数
  res.render('index', { deviceData: deviceData })
})

// 将express实例导出为firebase云函数,函数名为app
exports.app = functions.https.onRequest(app)

修正getFirestore函数的返回逻辑

你现有的getFirestore没有正确返回查询结果,调整如下:

async function getFirestore() {
  const firestore = admin.firestore();
  try {
    const doc = await firestore.collection('device').doc("device").get()
    if (doc.exists) return doc.data()
    console.log("No such document!")
    return null
  } catch (err) {
    console.log('Error getting document', err)
    return null
  }
}

修正admin初始化配置错误

你当前admin.initializeApp里的databaseURL填错为服务账号邮箱,需改为你的实时数据库地址:

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: "https://unabiz-firebase-default-rtdb.firebaseio.com"
})

2. firebase.json配置修正

要让hosting的请求转发到你的云函数,需要在firebase.json中添加rewrite规则:

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "function": "app"
      }
    ]
  },
  "functions": {
    "source": "functions"
  }
}

如果你不需要用服务端渲染,只是要托管静态html,直接把你的index.html放到public目录下即可,不需要配置rewrite规则,也不需要写express相关代码,直接启动serve就能访问。

3. 前端index.html语法修正

你当前的前端代码存在script标签嵌套错误,把内层的script引入删除,改为ES模块导入即可:

<script type="module">
  // 正确导入firebase初始化方法
  import { initializeApp } from "https://www.gstatic.com/firebasejs/9.1.1/firebase-app.js";
  const firebaseConfig = {
      apiKey: "AIzaSyDVYsLyFvqo8jYc28QPiD5Os69PxKvnG1g",
      authDomain: "unabiz-firebase.firebaseapp.com",
      databaseURL: "https://unabiz-firebase-default-rtdb.firebaseio.com",
      projectId: "unabiz-firebase",
      storageBucket: "unabiz-firebase.appspot.com",
      messagingSenderId: "48829412875",
      appId: "1:48829412875:web:6273116637b54d0bc2b90e"
  };
  const app = initializeApp(firebaseConfig);
</script>

验证步骤

修改完成后重新执行firebase serve --only hosting,functions,查看终端输出的云函数是否正常启动,访问对应地址即可正常加载页面。

内容的提问来源于stack exchange,提问作者Javier Wong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:57:02