Firebase:使用预留托管 URL 时未创建 Firebase 应用“[DEFAULT]”

Posted

技术标签:

【中文标题】Firebase:使用预留托管 URL 时未创建 Firebase 应用“[DEFAULT]”【英文标题】:Firebase: No Firebase App '[DEFAULT]' has been created when using Reserved Hosting URL 【发布时间】:2020-06-15 15:17:01 【问题描述】:

我已经按照指南 here 设置了我的 firebase 网络项目

我决定使用保留的托管 URL,因为它似乎是处理我的项目的本地、暂存和生产环境的绝佳解决方案,如 here 所述

问题是,当我尝试在我的一个组件中使用 firebase 时:

firebase.auth()

我收到以下错误

没有创建 Firebase 应用“[DEFAULT]” - 调用 Firebase App.initializeApp()

index.html 文件

<body>
    <noscript>You need to enable javascript to run this app.</noscript>
    <div id="root"></div>
    <!-- The core Firebase JS SDK is always required and must be listed first -->
    <script src="https://www.gstatic.com/firebasejs/7.9.3/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.9.3/firebase-auth.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.9.3/firebase-analytics.js"></script>
    <script src="/__/firebase/init.js"></script>
  </body>

test.jsx 文件

import firebase from "firebase";

class LoginModal extends React.Component 

sendVerificationCode() 
    var phoneNumber = this.userPhoneNumber;
    console.log("sending verification code to: ", phoneNumber);
    var appVerifier = window.recaptchaVerifier;

    firebase
      .auth()
      .signInWithPhoneNumber(phoneNumber, appVerifier)
      .then(function(confirmationResult) 
        // SMS sent. Prompt user to type the code from the message, then sign the
        // user in with confirmationResult.confirm(code).
        window.confirmationResult = confirmationResult;
        console.log("confirmationResult = ", confirmationResult);
      )
      .catch(function(error) 
        // Error; SMS not sent
        console.log("error = ", error);
        // ...
      );
  


调用该函数 (sendVerificationCode()) 时,应用程序崩溃并出现以下错误:

FirebaseError: Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app).

另外,我在控制台中得到了这个输出(可能是相关的,但不确定......):

init.js:1 Uncaught SyntaxError: Unexpected token '<'

关于我可能遗漏的任何内容?谢谢!!

【问题讨论】:

【参考方案1】:

如果你尝试

window.firebase

您实际上会看到 firebase 的实例已被初始化。

【讨论】:

【参考方案2】:

仅当您使用 Firebase CLI 为您的网站提供服务时,保留的托管 URL 才会在本地提供:

firebase serve

您的网站应该是可见的 @ http://localhost:5000

另一种解决方案是确定项目是否已加载,如果没有则加载测试环境:

if (! firebase.apps.length) 
    firebase.initializeApp(
        // firebase config object
    )

【讨论】:

以上是关于Firebase:使用预留托管 URL 时未创建 Firebase 应用“[DEFAULT]”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 firebase 托管的 webapp 中获取 firebase 函数 URL?

Firebase 托管 URL 需要 .html 来显示页面

如何使用 Firebase 托管来托管图像?

Firebase 长动态链接分析

带有 Firebase 托管的 Flutter web 无法从存储中加载图片

Firebase 动态托管 重写主页