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 来显示页面