firebase.auth不是函数-具有多个firebase应用程序初始化

时间:2019-03-24 23:15:09

标签: javascript firebase firebase-authentication

我收到错误信息'Uncaught TypeError:firebase.auth不是一个函数'。

我的代码运行正常,然后我实现了我的客户端api,发现他们的api已经使用并初始化了另一个firebase应用。因此,由于无法以常规方式初始化firebase应用程序(即firebase.initializeApp(config)),因此按照以下文档进行初始化。 (这会导致错误)

var configOther = {
apiKey: "xxxx",
authDomain: "xxxx",
databaseURL: "xxxx",
projectId: "xxxx",
storageBucket: "xxxx",
messagingSenderId: "xxxx"
};

var firebaseOther = firebase.initializeApp(configOther, "firebaseOther");

console.log("auth: ", firebase.auth(firebaseOther)); //"Uncaught TypeError: firebase.auth is not a function"

关于我在这里做错什么的任何想法?非常感谢。

注意-我还尝试了以下速记符号:

firebaseOther.auth() 

代替

firebase.auth(firebaseOther)

但这会导致相同的错误。

3 个答案:

答案 0 :(得分:0)

您可能跳过了在页面中包含firebase-auth脚本的步骤,如documentation所述:

<!-- Firebase App is always required and must be first -->
<script src="https://www.gstatic.com/firebasejs/5.9.1/firebase-app.js"></script>

<!-- Add additional services that you want to use -->
<script src="https://www.gstatic.com/firebasejs/5.9.1/firebase-auth.js"></script>

答案 1 :(得分:0)

唯一的解释是,页面中的某处还有另一个<script>标签,引用了firebase-app.js文件,例如

<script src="https://www.gstatic.com/firebasejs/5.9.1/firebase-app.js"></script>

在您添加firebase.jsfirebase-app.jsfirebase-auth.js后,此标记将显示在 之后。

发生的情况是,包含firebase-app.js会设置全局firebase变量的值,从而覆盖先前设置的所有内容。

解决方案是删除重复的Firebase脚本包含项,或者至少确保最后包含要激活的脚本。

答案 2 :(得分:0)

我有一个类似的问题,可以通过删除文档提供的HTML中的defer来解决:

        <script src="https://www.gstatic.com/firebasejs/7.17.2/firebase-app.js"></script>
        <script defer src="https://www.gstatic.com/firebasejs/7.17.2/firebase-auth.js"></script>
        <script defer src="https://www.gstatic.com/firebasejs/7.17.2/firebase-firestore.js"></script>